General Category > Общий раздел

ещё про цикл дейкстры

<< < (3/38) > >>

Geniepro:

--- Цитата: Илья Ермаков от Июль 20, 2012, 08:42:52 am ---Какими ошибками? При вводе с листка на экран очевидная опечатка не поменялось бы на c i на j?

--- Конец цитаты ---
Ну Вам эта ошибка очевидна, мне, например, нет. Я сильно не рассамтривал Ваш алгоритм, не анализировал его, но всё же с первого взгляда его суть я не понял...

valexey:

--- Цитата: Geniepro от Июль 20, 2012, 05:23:07 am ---На вражеском форуме новая тема про ЦД: http://forum.oberoncore.ru/viewtopic.php?f=82&t=4027
Там у Ермакова получился запутанный и глючный ЦД, походу он его ни разу не тестировал.

--- Конец цитаты ---
Ну, во первых, то не вражеский форум а просто альтернативный с очень альтернативными порядками и модераторами. Там просто идеалогия важнее истины :-)

Во-вторых, в силу его альтернативности, там сообщения имеют тенденцию бегать по всему форуму, периодически оказываясь то в архиве, то в закрытых разделах, поэтому просьба - не просто давать ссылку на пост с инфой, но и все ценное/краткое содержание, вставлять в виде цитаты в своем сообщении, дабы не зависить от колеблющейся линии партии того форума.

В данном случае прошу озвучить условие решаемой задачи.

Geniepro:

--- Цитата: valexey от Июль 20, 2012, 09:59:42 am ---... просьба - не просто давать ссылку на пост с инфой, но и все ценное/краткое содержание, вставлять в виде цитаты в своем сообщении, дабы не зависить от колеблющейся линии партии того форума.

В данном случае прошу озвучить условие решаемой задачи.

--- Конец цитаты ---


--- Цитата: Илья Ермаков ---При расчёте статистики по результатам ЕГЭ в регионе у нас в ОРЦОКО пришлось кое-что дописывать, т.к. федеральное ПО ужасное и не считает всё, что нужно.
Нужно посчитать количество выпускников, сдававших, соответственно, 1, 2, 3... экзамена.
Программист сортирует экспортированные из системы результаты экзаменов в Excel по полю "номер паспорта" и дальше сохраняет в CSV одну только эту колонку. Т.е. имеется последовательность строк с номерами паспортов, где каждый номер повторяется (рядом) столько раз, сколько человек сдавал экзаменов.
Программист сейчас ваяет на ББ процедурку, которая посчитает статистику.
Я тоже тут накидал алгоритм. Не напрягая мозги, получился сразу цикл Дейкстры. Тестировать не тестировал, написал на бумажке.
Правда, программист не хочет его брать, говорит, что не понимает  Колдует уже час над вложенными циклами, пытаясь, к тому же, это сделать прямо над TextMappers.Scanner.

Привожу свой вариант:

--- Код: ---stat[i] имеет смысл количества человек, сдававших i экзаменов
обнуление массива stat
i := 0; j := 1; (* Инвариант: [i, j) - интервал из одинаковых номеров паспортов *)
WHILE (j < len) & (pass[j] = pass[i]) DO
   INC(j)
ELSIF (j < len) & (pass[j] # pass[i]) DO
   INC(stat[j - i]); i := j; j := i + 1
END;
IF i < len THEN (* чтобы алгоритм был применим к пустой последовательности *)
   INC(stat[j - i])
END
--- Конец кода ---

--- Конец цитаты ---

ilovb:
Посмотрел на том форуме.... чета слишком заумно для такой задачи.

Прикладники классически пишут так:

Список = Новый Массив;
   Список.Добавить("10");
   Список.Добавить("10");
   Список.Добавить("20");
   Список.Добавить("30");
   Список.Добавить("30");
   Список.Добавить("30");
   Список.Добавить("40");
   Список.Добавить("50");
   Список.Добавить("50");
   Список.Добавить("50");
   
   МаксимумЭкзаменов = 100;
   
   Статистика = Новый Массив(МаксимумЭкзаменов);
   
   ТекЭлемент = Неопределено;
   КоличествоЭкзаменов = 0;
   
   Для Каждого Элемент Из Список Цикл
      
      Если Элемент = ТекЭлемент Тогда // считаем
         КоличествоЭкзаменов = КоличествоЭкзаменов + 1;
      Иначе // обрабатываем результат и берем следующий элемент
         Статистика[КоличествоЭкзаменов] = Статистика[КоличествоЭкзаменов] + 1;
         КоличествоЭкзаменов = 1;
         ТекЭлемент = Элемент;
      КонецЕсли;
      
   КонецЦикла;
   
   Статистика[КоличествоЭкзаменов] = Статистика[КоличествоЭкзаменов] + 1;

Илья Ермаков:
Ваш цикл тоже, по структуре, оптимизированный ЦД (где условие "пока не конец последовательности" вынесено).

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии