Присоединиться

11 класс·высокий уровень

На вход программы подаются сведения о набранных на ЕГЭ баллах учениками

Условие

На вход программы подаются сведения о набранных на ЕГЭ баллах учениками данной школы по трём предметам. В первой строке сообщается количество учащихся N, каждая из следующих N строк имеет формат: < Фамилия > < Инициалы > <БаллыПоРусскомуЯзыку> <БаллыПоМатематике> <БаллыПоИнформатике>, где <Фамилия> — строка, состоящая не более чем из 20 символов, < Инициалы > — строка, состоящая из 4-х символов (буква, точка, буква, точка), <БаллыПоРусскомуЯзыку>, <БаллыПоМатематике>, <БаллыПоИнформатике> — целые числа в диапазоне от 0 до 100. Все элементы одной строки отделены друг от друга пробелом. Пример входной строки: Петров С. Н. 78 82 70Требуется написать как можно более эффективную программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет выводить на экран фамилии и инициалы учеников, набравших минимальное среднее арифметическое баллов по трём предметам, отличное от 0 (таких учеников может быть несколько), а также среднее арифметическое набранных ими баллов.

Следует учитывать, что N ^ 100.

Формат задания

Развёрнутый ответ: короткого ответа здесь нет — оценивается само рассуждение. Разбор откроется после входа.

Решение по шагам

  1. Как рассуждать

    Решение. var fio:array[1..100] of string;var fioMin:array[1..100] of string;var sumMin:array[1..100] of integer;bRus:array[1..100] of integer; bMath:array[1..100] of integer; bInf:array[1..100] of integer;min,N,i,k,b,sum,iMin: integer; с: char;iMin: = 1;begin readln(N);min:=300; for i:=1 to N do begin fio[i]:=''; for k:=1 to 2 do repeat read(c);fio[i]:=fio[i]+c; until c=' '; read(bRus[i]);read(bMath[i]);read(bInf[i]);sum = (bRus[i] + bMath[i] + bInf[i]); if sum = min thenbeginfioMin[iMin] = fio[iMin];sumMin[iMin] = sum;iMin = iMin + 1;end; if sum < min thenbeginmin: = sum;for i:=1 to 100 dobeginfioMin[i]: = '';end;fioMin[1]: = fio[i];sumMin[1] = sum;iMin := 1;end;end;for (i:=iMin downto

Осталось ещё 2 шага

  1. writeln(fioMin[i], sumMin[i]); end. Приведём…

  2. # точка важна, иначе будет целочисленное…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Обработка символьных строк»

На вход программы подаются сведения о набранных на ЕГЭ баллах учениками — решение с объяснением | Lom Ai