После инициализации массива следует прочесть информацию о количестве абитуриентов и организовать цикл, в котором будут обрабатываться данные о каждом абитуриенте и соответствующим образом корректироваться элементы массива year. В дальнейшем сведения об уже обработанном абитуриенте нам не будут нужны, поэтому сохранять их в специальном наборе данных (например, массиве) не требуется. Заметим также, что фамилия абитуриента для решения задачи не требуется, поэтому после чтения двух числовых данных можно сразу переходить к новой строке, пропуская строковый элемент данных (фамилию). В задаче не нужно использовать и номера школ, однако их придется считывать, так как только после номера школы указывается интересующий нас год поступления абитуриента.
Когда данные обо всех абитуриентах будут обработаны, в массиве year будет содержаться вся необходимая информация, которую останется вывести в формате, указанном в условии задачи.
Приведем первый вариант решения (этот вариант содержит одну ошибку):
uses PT4Exam;
var
n, i, k, m: integer;
year: array[1990..2010] of integer;
begin
Task('ExamTaskC25');
for i := 1990 to 2010 do
year[i] := 0;
readln(n);
for i := 1 to n do
begin
readln(k, m);
Inc(year[m]);
end;
for i := 1990 to 2010 do
writeln(i, ' ', year[i]);
end.
Ошибка связана с тем, что на экран выводится информация о годах, отсутствующих в наборе исходных данных. Поэтому она сразу будет выявлена при обработке наборов данных небольшого размера, предлагаемых программе при первом тестовом запуске (для большей наглядности приведем окно задачника в режиме сокращенного отображения данных, при котором выводятся только пять первых элементов из каждого набора данных):
Для исправления ошибки достаточно добавить в последний цикл условный оператор:
for i := 1990 to 2010 do
if year[i] 0 then
writeln(i, ' ', year[i]);
Теперь все 9 тестовых испытаний программы, требуемых для того, чтобы решение было зачтено как выполненное, будут пройдены успешно.
Завершая рассмотрение этого задания, опишем некоторые дополнительные возможности, связанные с просмотром больших наборов данных.
Начиная со второго испытания, программе может быть предложен для обработки набор исходных данных большего размера (порядка 50-100 элементов). При этом уже не удастся отобразить на экране все данные, связанные с заданием. В подобной ситуации у правой границы окна задачника появится
Помимо стандартных действий по прокрутке данных, в окне задачника предусмотрены возможности интеллектуальной" прокрутки, позволяющие быстро перейти к началу каждого раздела задания, а также сравнить соответствующие фрагменты полученных результатов и примера верного решения. Для циклического перебора разделов сверху вниз предназначена клавиша [+] (а также комбинация Ctrl+PgDn), для циклического перебора разделов снизу вверх -- клавиша [-] (а также комбинация Ctrl+PgUp). Для быстрого переключения между соответствующими фрагментами разделов с результатами и с примером верного решения предназначена клавиша [/] (а также комбинация Ctrl+Tab). Все эти действия можно выполнить и с помощью мыши; для этого предусмотрены кнопки в левом верхнем углу прокручиваемой области окна, отведенной под отображение разделов задания (эти кнопки отображаются на экране, если размер данных, связанных с заданием, превышает размеры окна). Приведем вид окна задачника с полосой прокрутки и дополнительными кнопками:
Обозначения на кнопках совпадают с клавишами, выполняющими те же действия; при наведении мышью на кнопку рядом с ней появляется всплывающая подсказка.