Автор | Сообщение |
|
| постоянный участник
|
Сообщение: 19
|
|
Отправлено: 21.03.12 14:45. Заголовок: [С4] задача 4
Зачем в этой задаче хранить всех участников? Мне кажется проще считать повторяющиеся фамилии. цитата: | 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. |
|
|
|
|
Ответов - 2
[только новые]
|
|
|
| Администратор
|
Сообщение: 194
|
|
Отправлено: 21.03.12 16:07. Заголовок: oval пишет: Зачем в ..
oval пишет: цитата: | Зачем в этой задаче хранить всех участников? Мне кажется проще считать повторяющиеся фамилии. |
|
Обычно сначала все вводим, потом выводим результаты. Смешивать ввод и вывод в одном цикле не очень хорошо, особенно если это консоль. Кроме того, что выиграли? Объем памяти не изменился. Быстродействие тоже.
|
|
|
|
| постоянный участник
|
Сообщение: 20
|
|
Отправлено: 21.03.12 19:58. Заголовок: Поляков пишет: Быст..
Поляков пишет: ну, количество-то итераций внутреннего цикла уменьшилось, вместо i-1 рассмотренных ранее, перебираем только с отличающихся, и нет еще одного просмотра массива, хотя и так и так будет сложность O(n 2)
|
|
|
|