|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.12.2018, 09:03 | #1 |
Регистрация: 13.10.2010
Сообщений: 3
|
Неправильно работает рекурсивная функция
Всем привет. Ребят, есть вот такая задача:
Есть организация. У неё есть всякие подразделения (ID). У каждого подразделения есть баллы, которые рекурсивно подсчитываются функцией. Берётся сумма баллов для одного отдела, и делится на количество проголосовавших за этот отдел - обычное среднее арифметическое. Всё вроде бы просто. Потом берутся эти средние арифметические, суммируются, и делятся на количество отделов - так мы получаем средний балл для "Родительского" отдела. Далее по такой же схеме берутся средние показатели "Родительских" отделов, суммируются, и сумма делится на количество этих "Родительских" отделов - так мы получаем среднюю оценку для всей организации. Вроде бы просто, Организаия -> Родительские отделы -> Отделы. 3 уровня всего. Но. Например нужно для какого то отдела на самом нижнем уровне добавить произвольную оценку (балл), и пересчитать все остальные параметры. У меня это пока не получается. Помогите пожалуйста. Пример (на скриншоте) : Есть "родительский" отдел "Операционный департамент": У него есть 6 подотделов. У отдела "Управление депозитарных операций (ID=169)" 3 голоса, каждый по 100 баллов, средняя оценка 100. У каких то отделов вообще голосов нет - там нет баллов и количества голосов в скабках. У двух других отделов - Управление клиринга и Управление расчетов по 1 голосу, по 100 баллов, среднее значение у каждого из этих отделлов 100. Далее расчитывается среднее значение для "Операционного департамента". Берется сумма баллов: 300 и делится на общее количество отделов, учитываются даже отделы, у которых нет голосов. Получаем: 300/6 = 50. Тут всё правильно считается. Но если, например мне нужно к отделу "Управление депозитарных операций" - к баллам, которые были получены после голосования прибавить произвольный балл, например 70, то должно рассчитываться для этого отдела вот так: (100+100+100+70) / 4 = 92,5 и далее пересчитываться для головного отдела "Операционный департамент". Вот функция, которая ведёт сам расчёт: Код:
NPS_VALUE - это и есть итоговая оценка. POINTS_COUNT - количество, на которое делим для расчета среднего балла. Без условия if($child['ID']=='169') функция нормально ведёт расчёт, но вот произвольный балл добавить тогда не получиться. Помогите пожалуйста кто может. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
рекурсивная функция | AngelMarik | Помощь студентам | 1 | 24.05.2013 21:19 |
Неправильно работает функция округления числа | Nomicos | Помощь студентам | 3 | 09.07.2012 16:23 |
Рекурсивная функция | Trinity13 | Помощь студентам | 8 | 14.02.2010 18:44 |
Си++. Рекурсивная функция. | Diamond2107 | Помощь студентам | 6 | 02.12.2009 19:48 |