Читать интересную книгу Описание языка PascalABC.NET - W Cat

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 61 62 63 64 65 66 67 68 69 ... 101

end.

Мы воспользовались стандартной процедурой ввода read, введя все три исходных числа за один ее вызов. Этого же результата мы могли бы добиться и с помощью процедуры readln:

readln(a, b, c);

Заметим, что использование отдельных процедур readln для ввода каждого числа приведет к ошибочному результату:

readln(a);

readln(b);

readln(c);

В этом случае уже после ввода первого числа произойдет автоматический переход на следующую строку с исходными данными. Поэтому оставшиеся в первой строке числа будут пропущены, а поскольку во второй строке ничего нет" (входной поток состоит из единственной строки), будет выведено сообщение об ошибке "Input string was not in a correct format" ("Входная строка имела неверный формат").

Приведенный пример показывает, что при организации ввода данных в заданиях групп 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);

Первый атрибут определяет ширину поля вывода (если ширина равна 0, то используется минимально необходимое поле вывода). Наличие второго атрибута (допустимого только для вещественных чисел) означает, что число надо вывести в формате с фиксированной точкой, причем его значение равно количеству дробных знаков.

При запуске исправленной программы будет выведено сообщение о верном решении, а после трех запусков -- сообщение о том, что задание выполнено:

В случае успешного прохождения тестового испытания в окно задачника не включается раздел с примером верного решения, поскольку данные этого раздела совпадают с результатами, полученными программой.

Примечание. В системе PascalABC.NET, благодаря специальному механизму перенаправления данных, стандартные процедуры read-write можно использовать и при выполнении заданий из других групп, однако важно учитывать ряд особенностей использования этих процедур в заданиях групп Exam. Во-первых, только в заданиях групп Exam будут проявляться различия в использовании процедур read-write и readln-writeln (в остальных группах для ввода-вывода можно использовать как вариант процедуры с суффиксом ln", так и вариант без этого суффикса). Во-вторых, только в заданиях групп Exam можно при необходимости использовать атрибуты форматирования при выводе результатов, а также выводить дополнительные комментарии, если этого требует условие задачи. В-третьих, только в заданиях групп Exam можно вводить и выводить элементы данных несколькими способами, с использованием переменных различных типов; например, исходную строку можно либо сразу прочесть в строковую переменную, либо вводить посимвольно в цикле (в других группах заданий проводится более строгая проверка на соответствие типа переменной типу элемента исходных или результирующих данных).

Пример 2. Ввод и вывод массивов

Рассмотрим еще одно задание группы ExamBegin, особенностью которого является вывод в качестве результата элементов двумерного массива.

ExamBegin28°. На вход в первой строке подаются два целых положительных числа M и N, во второй строке — вещественное число D, а в третьей строке — набор из M вещественных чисел. Сформировать и вывести двумерный вещественный массив размера M × N, у которого первый столбец совпадает с исходным набором чисел, а элементы каждого следующего столбца равны сумме соответствующего элемента предыдущего столбца и числа D (в результате каждая строка массива будет содержать элементы арифметической прогрессии). Каждую строку элементов массива выводить на новой экранной строке, для каждого числа отводить 7 экранных позиций.

При запуске программы-заготовки, созданной для этого задания, окно задачника примет следующий вид:

Анализируя исходные данные, можно заметить, что полученная матрица должна иметь 8 строк, тогда как на экране отображаются только первые пять. Это связано с тем, что по умолчанию используется режим свернутого" отображения данных, при котором на экране выводится только несколько начальных строк. Признаком того, что имеются данные, не выведенные на экране, является кнопка, которая отображается в правом верхнем углу раздела исходных данных (на этой кнопке изображается стилизованная стрелка, направленная вниз). Для вывода всех данных достаточно нажать эту кнопку; можно также нажать клавишу Ins или выполнить щелчок мышью в любом месте раздела с данными задания (кроме раздела, содержащего формулировку). Если выполнить эти действия для нашего окна, то оно изменится следующим образом:

Повторный щелчок мышью, нажатие клавиши Ins или кнопки (на которой в данной ситуации будет отображаться стрелка, направленная вверх -- см. рисунок) восстанавливает сокращенное" отображение данных. Заметим, что в режиме "сокращенного" отображения нумеруется только первая строка данных, а в режиме полного отображения нумерацией снабжаются все строки.

Дополнительные возможности, связанные с просмотром данных большого размера, будут описаны далее, в пункте, посвященном задачам повышенной сложности.

1 ... 61 62 63 64 65 66 67 68 69 ... 101
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Описание языка PascalABC.NET - W Cat.
Книги, аналогичгные Описание языка PascalABC.NET - W Cat

Оставить комментарий