Решение задач
Разбор задачи C4 (демо ЕГЭ 2008)
На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий формат:
<Фамилия> <Имя> <оценки>,
где <Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> – через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример входной строки:
Иванов Петр 4 5 3
Требуется написать как можно более эффективную программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет выводить на экран фамилии и имена трех худших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трех худших, то следует вывести и их фамилии и имена.
<Фамилия> <Имя> <оценки>,
где <Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> – через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример входной строки:
Иванов Петр 4 5 3
Требуется написать как можно более эффективную программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет выводить на экран фамилии и имена трех худших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трех худших, то следует вывести и их фамилии и имена.
Решение:
Алгоритм программы такой:
- Считываем записи, сохраняя фамилию, имя и сумму баллов в нескольких массивах (или в массиве записей).
- Определяем 3 самых низких суммарных балла при просматре этих массивов (массивов записей). Средний балл не считаем, т.к. число экзаменов у школьников одинаково.
- При следующем просмотре массивов выводим фамилию и имена учеников, чей суммарный балл ≤ 3-ей по величине суммы.
Пример работы алгоритма.
Пусть на вход подается 10 записей, сумма баллов в которых равны:
- 15
- 14
- 13
- 9
- 12
- 9
- 9
- 15
- 8
- 12
- min1=8
- min2=9
- min3=9
- 9
- 9
- 9
- 8
Программа написана на языках:
- Паскаль (среда разработки Turbo Pascal 7.0),
- Бейсик (среда разработки Quick Basic 4.5),
- Алгоритмический язык (среда разработки Кумир 1.9.0).
- Си (среда разработки Borland C++ 3.1),
Чтобы прочесть комментарии к программе, наведите мышью на соответствующую строку. Строки, снабженные комментарием, выделены фиолетовым цветом.
Напротив названия языка программирования в скобках содержатся ссылки на скачку исходников и ехе (исполняемых файлов).
Работа программы на этих языках:
На рисунках видно, что в результате работы программы было выбрано 4-е записи. Минимальный средний балл у Раковой Марии, он равен (3+3+2)\3=8\3≈2,67
Еще трое школьников набрали средний балл, равный 3-м: Смирнов Алексей, Михайлов Тимур и Мухина Лариса.