Работы учащихся Решение сложных задач по программированию | Page 10
© Иванов Дмитрий, МБОУ «Лицей № 2», г. Нижневартовск
Задача № 9
Популярная газета объявила конкурс на выбор лучшего фильма, для которого стоит снять
продолжение. На выбор читателей было предложено 10 фильмов. Вам предлагается написать
эффективную, в том числе и по используемой памяти, программу, которая будет статистически
обрабатывать результаты sms-голосования по этому вопросу, чтобы определить популярность того
или иного фильма. Следует учитывать, что количество голосов в списке может быть очень велико. На
вход программе в первой строчке подается количество пришедших sms-сообщений N. В каждой из
последующих N строк записано название фильма. Пример входных данных:
6
Белое солнце пустыни
Бриллиантовая рука
Белое солнце пустыни
Белое солнце пустыни
Гараж
Бриллиантовая рука
Программа должна вывести список всех фильмов, встречающихся в списке, в порядке убывания
(невозрастания) количества отданных за них голосов с указанием этого количества голосов. Название
каждого фильма должно быть выведено только один раз. Пример выходных данных для приведенных
входных данных:
Белое солнце пустыни 3
Бриллиантовая рука 2
Гараж 1
Решение:
program kino;
var a:array[1..10] of string;
b:array[1..10] of integer;
N,c,k,i:integer;
z:string;
da:boolean;
begin
for i:=1 to 10 do begin
a[i]:=''; b[i]:=0;
end;
readln(N);c:=1;
for i:=1 to N do begin
da:=true;
readln(z);
for k:=1 to 10 do
if a[k]=z then begin
b[k]:=b[k]+1;
da:=false;
end;
if da then begin
a[c]:=z; b[c]:=b[c]+1; c:=c+1;
end;
end;
for i:=1 to c-1 do
writeln(a[i],' ',b[i]);
end.
май, 2015 г.