№№ заданий Пояснения Ответы Ключ Добавить инструкцию Критерии
Источник Раздел кодификатора ФИПИ Справка
PDF-версия PDF-версия (вертикальная) PDF-версия (крупный шрифт) PDF-версия (с большим полем) Версия для копирования в MS Word
Задания
Задания Д19 C4 № 3616

После единых выпускных экзаменов по информатике в район пришла информация о том, какой ученик какой школы сколько баллов набрал.

Районный методист решила выяснить номера школ, в которых один и тот же максимальный балл набрало более двух учеников. Например, если в школах 3, 5 и 7 по три ученика набрало баллы соответственно 70, 80 и 90 нужно вывести номера эти школ.

Если таких школ несколько нужно вывести номера этих школ. Если такая школа одна нужно вывести её номер и максимальный балл.

Если таких школ нет, то нужно вывести "Нет таких школ"

Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая должна вывести на экран требуемую информацию. Известно, что информатику сдавало больше 5-ти учеников района. Также известно, что в районе школы с некоторыми номерами не существуют.

На вход программе сначала подаётся число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:

 

<Фамилия> <Имя> <Номер школы> <Количество баллов>

 

где <Фамилия> — строка, состоящая не более чем из 30 символов без пробелов,

<Имя> — строка, состоящая не более чем из 20 символов без пробелов,

<Номер школы> — целое число в диапазоне от 1 до 99,

<Количество баллов> — целое число в диапазоне от 1 до 100.

Эти данные записаны через пробел, причём ровно один между каждой парой (то есть всего по три пробела в каждой строке).

Пример входной строки:

Иванов Иван 50 87

Пример выходных данных:

5 50 74 87

Другой вариант выходных данных:

7

Наибольший балл = 74

Третий вариант выходных данных:

Нет таких школ

Решение.

var nmax,mах:array[1. .99] of integer;

ch:char;

i,N, sh,ball,k:integer;

begin

for i: =1 to 99 do {обнуляем массивы}

begin

nmax[i] := 0;

max[i]:=-1

end;

readln(N); {считали количество строк}

for i:=1 to N do {перебираем все входные строки}

begin

repeat

read(ch)

until ch=' ';{считана фамилия}

repeat

read(ch) until ch=' ';{считано имя}

readln(sh,ball); {считали номер школы и балл ученика}

if ball>max[sh] then {сравниваем текущий балл с лучшим баллом по школе}

begin

max[sh]:=ball; {меняем лучший балл по школе}

nmax[sh]:=1; {число людей в школе с таким баллом устанавливаем =1}

end

else

if ball=max[sh] then {в школе есть еще такой лучший балл}

nmax[sh] : =nmax[sh] +1; {увеличиваем число людей в школе с таким баллом}

end;

k: =0;

for i:=1 to 99 do

if nmax[i]>2 then {отбираем только школы, у которых лучший балл}

begin {набрало более 2-х учеников}

k:=k+1; {считаем количество таких школ}

ball:=max[i]; {запоминаем балл в какой-нибудь из них}

write(i,' ') {выводим номер такой школы}

end;

if k=0 then

writeln('Нет таких школ')

else

begin

writeln;

if k=1 then

writeln('Наибольший балл = ',ball)

end

end.

· · Видеокурс ·