После единых выпускных экзаменов по информатике в район пришла информация о том,какой ученик, какой школы, сколько набрал баллов.
Районный методист решила выяснить номер школы, ученики которой набрали наибольший средний балл, с точностью до целых.
Программа должна вывести на экран номер такой школы и её средний балл.
Если наибольший средний балл набрало больше одной школы, вывести количество таких школ.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования), которая должна вывести на экран требуемую информацию.
Также известно, что в районе школ с некоторыми номерами не существует.
На вход программе сначала подается число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:
<Фамилия><Имя><Номер школы><Количество баллов>
<Фамилия>-строка, состоящая не более чем из 30 символов без пробелов,
<Имя>-строка, состоящая не более чем из 20 символов.
<Номер школы>-число в диапазоне от 1 до 99
<Количество баллов>-число в диапазоне от 1 до 100.
Эти данные записаны через пробел, то есть в каждой строке ровно 3 пробела.
Районный методист решила выяснить номер школы, ученики которой набрали наибольший средний балл, с точностью до целых.
Программа должна вывести на экран номер такой школы и её средний балл.
Если наибольший средний балл набрало больше одной школы, вывести количество таких школ.
Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования), которая должна вывести на экран требуемую информацию.
Также известно, что в районе школ с некоторыми номерами не существует.
На вход программе сначала подается число учеников, сдававших экзамен. В каждой из следующих N строк находится информация об учениках в формате:
<Фамилия><Имя><Номер школы><Количество баллов>
<Фамилия>-строка, состоящая не более чем из 30 символов без пробелов,
<Имя>-строка, состоящая не более чем из 20 символов.
<Номер школы>-число в диапазоне от 1 до 99
<Количество баллов>-число в диапазоне от 1 до 100.
Эти данные записаны через пробел, то есть в каждой строке ровно 3 пробела.
💡 Пошаговый разбор и решение:
program C4_2;
uses crt;
type massiv=array[1..99] of integer;
var count:massiv; //массив количества учеников,где индекс-номер школы
sumball:massiv; //массив суммы баллов
ch:char;
i,N,nomer,ball,max,nmax:integer;
Begin
for i:=1 to 99 do
begin
count[i]:=0; //обнуляем массивы
sumball[i]:=0;
end;
write('Введите количество учеников: ');readln(n);
for i:=1 to n do
begin
Repeat
read(ch);
Until ch=' '; //фамилия считана
Repeat
read(ch);
Until ch=' ';//Имя
read(nomer);
read(ball);
count[nomer]:=count[nomer]+1; //счетчик количества учеников данной школы
sumball[nomer]:=sumball[nomer]+ball; //сумма баллов
end;
for i:=1 to 99 do
if count[i]>0 then sumball[i]:=round(sumball[i] / count[i]); //вычисляется средний балл
// с точностью до целых
max:=1;
nmax:=1;
for i:=2 to 99 do
if sumball[i]>sumball[max] then //поиск максимального среднего балла
begin
max:=i;
nmax:=1;
end
else if sumball[i]=sumball[max] then inc(nmax);
if nmax=1 then writeln(max,' ',sumball[max])
else writeln(nmax);
End.
uses crt;
type massiv=array[1..99] of integer;
var count:massiv; //массив количества учеников,где индекс-номер школы
sumball:massiv; //массив суммы баллов
ch:char;
i,N,nomer,ball,max,nmax:integer;
Begin
for i:=1 to 99 do
begin
count[i]:=0; //обнуляем массивы
sumball[i]:=0;
end;
write('Введите количество учеников: ');readln(n);
for i:=1 to n do
begin
Repeat
read(ch);
Until ch=' '; //фамилия считана
Repeat
read(ch);
Until ch=' ';//Имя
read(nomer);
read(ball);
count[nomer]:=count[nomer]+1; //счетчик количества учеников данной школы
sumball[nomer]:=sumball[nomer]+ball; //сумма баллов
end;
for i:=1 to 99 do
if count[i]>0 then sumball[i]:=round(sumball[i] / count[i]); //вычисляется средний балл
// с точностью до целых
max:=1;
nmax:=1;
for i:=2 to 99 do
if sumball[i]>sumball[max] then //поиск максимального среднего балла
begin
max:=i;
nmax:=1;
end
else if sumball[i]=sumball[max] then inc(nmax);
if nmax=1 then writeln(max,' ',sumball[max])
else writeln(nmax);
End.
📚 Похожие разобранные задания по предмету:
ID 140866 • Задание №15
Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседн...
ID 34760 • Задание №27
Последовательность натуральных чисел характеризуется числом Х — наибольшим числом, кратным 14 и являющимся пр...
Официальные критерии проверки ФИПИ:
Критерии проверки:
Критерии оценивания выполнения задания | Баллы
Программа работает для любых входных данных произвольного размера и находит ответ, не сохраняя входные данные в массиве, размер которого соответствует числу N (количеству запросов). Программа просматривает входные данные один раз. Допускается наличие в тексте программы одной синтаксической ошибки: пропущен или неверно указан знак пунктуации, неверно написано или пропущено зарезервированное слово языка программирования, не описана или неверно описана переменная, применяется операция, недопустимая для соответствующего типа данных (если одна и та же ошибка встречается несколько раз, то это считается за одну ошибку). | 4
Программа работает верно, но входные данные запоминаются в массиве, размер которого соответствует числу N. Этот массив, возможно, потом сортируется. Допускается наличие от одной до трех синтаксических ошибок. Возможно, в принципиально верно организованном вводе данных есть одна ошибка (например, использование read вместо readln в Паскале или неверное считывание строки в C++). Три балла также выставляется, если в эффективной программе, удовлетворяющей критериям выставления 4 баллов, есть одна ошибка, в результате которой программа работает неверно на некоторых наборах нетипичных входных данных. | 3
Программа работает в целом верно, эффективно или нет, но в реализации алгоритма содержится до двух ошибок (неверная инициализация счётчиков, допущена ошибка в принципиально верно организованной сортировке или алгоритме поиска минимальных элементов, используется знак “
Программа, возможно, неверно работает при некоторых входных данных, но по приведённому тексту решения ясно, что экзаменуемый понимает, из каких этапов должно состоять решение задачи. При использовании сортировки она может быть реализована принципиально неверно (например, вместо двух циклов используется один), или допущена принципиальная ошибка в поиске нужных элементов. Всего допускается до 4 различных ошибок в реализации алгоритма, в том числе описанных в критериях присвоения двух баллов. Допускается наличие от одной до семи синтаксических ошибок, описанных выше. | 1
Задание не выполнено или выполнено неверно. | 0
Максимальный балл | 4
Критерии оценивания выполнения задания | Баллы
Программа работает для любых входных данных произвольного размера и находит ответ, не сохраняя входные данные в массиве, размер которого соответствует числу N (количеству запросов). Программа просматривает входные данные один раз. Допускается наличие в тексте программы одной синтаксической ошибки: пропущен или неверно указан знак пунктуации, неверно написано или пропущено зарезервированное слово языка программирования, не описана или неверно описана переменная, применяется операция, недопустимая для соответствующего типа данных (если одна и та же ошибка встречается несколько раз, то это считается за одну ошибку). | 4
Программа работает верно, но входные данные запоминаются в массиве, размер которого соответствует числу N. Этот массив, возможно, потом сортируется. Допускается наличие от одной до трех синтаксических ошибок. Возможно, в принципиально верно организованном вводе данных есть одна ошибка (например, использование read вместо readln в Паскале или неверное считывание строки в C++). Три балла также выставляется, если в эффективной программе, удовлетворяющей критериям выставления 4 баллов, есть одна ошибка, в результате которой программа работает неверно на некоторых наборах нетипичных входных данных. | 3
Программа работает в целом верно, эффективно или нет, но в реализации алгоритма содержится до двух ошибок (неверная инициализация счётчиков, допущена ошибка в принципиально верно организованной сортировке или алгоритме поиска минимальных элементов, используется знак “
Программа, возможно, неверно работает при некоторых входных данных, но по приведённому тексту решения ясно, что экзаменуемый понимает, из каких этапов должно состоять решение задачи. При использовании сортировки она может быть реализована принципиально неверно (например, вместо двух циклов используется один), или допущена принципиальная ошибка в поиске нужных элементов. Всего допускается до 4 различных ошибок в реализации алгоритма, в том числе описанных в критериях присвоения двух баллов. Допускается наличие от одной до семи синтаксических ошибок, описанных выше. | 1
Задание не выполнено или выполнено неверно. | 0
Максимальный балл | 4
🔗 Другие задания линии №19 по предмету Информатика:
ID 33084
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходя...
ID 33085
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходя...
ID 33086
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходя...
ID 33087
Два игрока, Паша и Вася, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходя...
ID 33088
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходя...