Мы воспользовались стандартной процедурой ввода read, введя все три исходных числа за один ее вызов. Этого же результата мы могли бы добиться и с помощью процедуры readln:
readln(a, b, c);
Заметим, что использование
readln(a);
readln(b);
readln(c);
В этом случае уже после ввода первого числа произойдет автоматический переход на следующую строку с исходными данными. Поэтому оставшиеся в первой строке числа будут пропущены, а поскольку во второй строке ничего нет" (входной поток состоит из единственной строки), будет выведено сообщение об ошибке "
Приведенный пример показывает, что при организации ввода данных в заданиях групп Exam необходимо учитывать особенности стандартных процедур read и readln.
При запуске приведенного выше варианта программы вид окна не изменится, поскольку мы не вывели никаких данных. В заданиях групп Exam запуск программы считается ознакомительным до тех пор, пока программа не выведет хотя бы один элемент результирующих данных. Кроме того, задачник не контролирует, каким образом программа читает исходные данные (например, мы могли бы ввести всю исходную строку в переменную типа string, а затем разобрать" эту строку, выделив из нее три числа и преобразовав их к типу real). Отмеченные особенности характерны именно для заданий групп Exam, в которых для ввода данных не используются специальные средства задачника.
Реализуем алгоритм нахождения минимального и максимального элемента. Для этого опишем еще две переменные min и max типа real и добавим в конец программы следующие операторы:
if a < b then
begin
min := a;
max := b;
end
else
begin
min := b;
max := a;
end;
if c < min then
min := c
else
if c > max then
max := c;
Таким образом, для одновременного нахождения минимального и максимального из трех чисел требуется не более трех операций сравнения и не более трех операций присваивания.
Осталось вывести полученные результаты. Вывод, как и ввод, следует выполнять с помощью стандартных процедур языка Pascal, учитывая их особенности.
Вначале, в качестве примера, организуем вывод, не соответствующий условиям задачи. Для этого добавим в конец программы следующий оператор:
writeln(min, max);
Приведем вид окна задачника при запуске полученной программы:
Мы видим, что минимум и максимум найдены правильно, однако выведены не в том формате, который требовался (требуемый формат приводится в разделе с примером верного решения). Мы допустили при выводе три ошибки: во-первых, вывели оба числа в одной строке (при этом они слились", поскольку мы не предусмотрели вывод пробела-разделителя), во-вторых, не снабдили числа комментариями и, в-третьих, не настроили их отображение в формате с двумя дробными знаками (первое число было выведено с единственным знаком после точки).
Примечание. Следует обратить внимание на панель индикаторов, которая отображается между информационной панелью и разделом с формулировкой задания в случае, если запуск программы не является ни демонстрационным, ни ознакомительным. Обычно на этой панели выводятся три индикатора: первый указывает количество введенных исходных данных, второй -- количество выведенных результатов, а третий -- количество успешно пройденных тестовых испытаний. При выполнении заданий, связанных с ЕГЭ, первые два индикатора являются неактивными, поскольку, как было отмечено выше, для получения исходных данных и записи результатов не используются средства задачника, и поэтому он не в состоянии проконтролировать каждую операцию ввода-вывода.
Для исправления первых двух ошибок достаточно изменить вывод следующим образом:
writeln('MIN=', min);
writeln('MAX=', max);
Однако в этом случае числа по-прежнему могут содержать неверное число дробных знаков. Для исправления этой последней ошибки проще всего использовать
writeln('MIN=', min:0:2);
writeln('MAX=', max:0:2);
Первый атрибут определяет
При запуске исправленной программы будет выведено сообщение о верном решении, а после трех запусков -- сообщение о том, что задание выполнено: