Форум » Обработка числовых последовательностей » [С4] задача 4 » Ответить

[С4] задача 4

oval: Зачем в этой задаче хранить всех участников? Мне кажется проще считать повторяющиеся фамилии. [quote] var Info: array[1..100] of record name: string; count: integer; end; i, k, p, N, c: integer; s: string; not_exist: boolean; begin readln(N); c := 1; for i:=1 to N do begin not_exist:=true; readln(s); p := Pos(' ', s); s := Copy(s,1,p-1); k:=1; while (k<=c) and not_exist do begin if s = Info[k].name then begin Info[k].count := Info[k].count + 1; writeln(Info[k].name,Info[k].count); not_exist:=false; end; k:=k+1; end; if not_exist then begin Info[c].name := s; Info[c].count := 1; writeln(Info[c].name); c:=c+1; end; end; end.[/quote]

Ответов - 2

Поляков: oval пишет: Зачем в этой задаче хранить всех участников? Мне кажется проще считать повторяющиеся фамилии. Обычно сначала все вводим, потом выводим результаты. Смешивать ввод и вывод в одном цикле не очень хорошо, особенно если это консоль. Кроме того, что выиграли? Объем памяти не изменился. Быстродействие тоже.

oval: Поляков пишет: Быстродействие тоже ну, количество-то итераций внутреннего цикла уменьшилось, вместо i-1 рассмотренных ранее, перебираем только с отличающихся, и нет еще одного просмотра массива, хотя и так и так будет сложность O(n2)



полная версия страницы