Разбор задачи C4 (демо ЕГЭ 2006)
Иванов 8 9 3
Петров 2 0 0
Требуется написать программу на языке Паскаль или Бейсик, которая определяла бы по имеющимся данным количество абитуриентов, набравших полупроходной балл в данный вуз или сообщала, что такой балл отсутствует. (Полупроходным называется такой балл, что лишь часть абитуриентов, набравших такой балл и не получивших ни одной неудовлетворительной оценки, попадает в K лучших, которые должны быть зачислены на 1 курс) Считается, что абитуриенты, получившие только удовлетворительные оценки, обязательно присутствуют.
Чтобы было понятно, что такое полупроходной балл, рассмотрим пример.
Пусть есть 60 абитуриентов и 20 мест. Максимальный суммарный балл =9+9+5=23. После сдачи экзаменов 18 человек набрали сумму баллов ≥22. Еще 4 человека набрали 21 балл. 20-18=2, т.е. мест осталось 2, а абитуриентов 4. Поэтому при равных суммарных баллах примут только 2-х человек, а остальные 2-е не поступят.
Получается, 22 - проходной балл , а 21 - полупроходной.
Алгоритм программы такой:
- Считывая очередную запись, подсчитываем сумму баллов школьника. В массиве, хранящем количество школьников по баллам, находим элемент, индекс которого равен полученной сумме, и увеличиваем его на 1. Если школьник сдает какой-либо экзамен на 2, то сумма его баллов для удобства приравнивается 0 или 1 - для Бейсика.
- Затем, начиная с балла=23 (максимальный), считаем суммарное количество абитуриентов по баллам из массива, уменьшая индекс. Т.е. мы складываем количество абитуриентов с баллами: 23, 22, 21, 20... Делаем это до тех пор, пока количества мест K ≥ суммарного количества абитуриентов и сумма их баллов ≥9.(9 - минимально возможный балл). Индекс 1-го элемента массива, который не войдет в сумму - это полупроходной балл.
- Если проходной балл набрали <K абитуриентов, то программа выведет количество абитуриентов, набравших полупроходной балл. Если проходной балл набрали ровно К абитуриентов, то программа выведет: "полупроходной балл отсутствует".
Программа написана на языках:
- Паскаль (среда разработки Turbo Pascal 7.0),
- Бейсик (среда разработки Quick Basic 4.5),
- Алгоритмический язык (среда разработки Кумир 1.9.0).
- Си (среда разработки Borland C++ 3.1),
Чтобы прочесть комментарии к программе, наведите мышью на соответствующую строку. Строки, снабженные комментарием, выделены фиолетовым цветом.
Напротив названия языка программирования в скобках содержатся ссылки на скачку исходников и ехе (исполняемых файлов).
Рассмотрим 2 случая работы программы:
- полупроходного балла нет;
- полупроходной балл есть.
Работа программы, когда полупроходной балл есть: