Форматный вывод
Для вывода вещественных чисел необходимо указать в операторе WRITE формат представления числа, который имеет вид:
WRITE(<переменная>:m:n);
где:
m – целое число, указывающее общее количество позиций отводимое под значение переменной, включая позицию под знак числа, точку и количество цифр дробной части;
n – целое число, определяющее количество цифр дробной части.
Выводимая информация выравнивается по левому краю. При этом подавляется печать ведущих нулей, т.е. если для вывода числа было выделено четыре позиции, то на экран монитора будет выведено, например, 6, а не 0006 .
Пример. Выведем значение переменной A, равное 401.3 оператором write(A:8:2) . На экран монитора будет выведено:
Символом обозначен пробел.
Вывод вещественных чисел выполняется по следующим правилам:
- Если число имеет меньшую длину, чем m, то оно будет дополнено слева пробелами.
- Если число имеет большую длину, чем m, то параметр m игнорируется и число будет выведено полностью.
- Если дробная часть больше, чем параметр n, то число округляется. Округление не изменяет самого значения переменной, меняется только представление числа на мониторе.
- Если параметр n не указан, то ни дробная часть числа, ни десятичная точка не выводятся. Вывод осуществляется в формате с плавающей запятой.
Задания по теме урока
- Напишите программу, которая позволяет вводить с клавиатуры целочисленные элементы массива a[1..10], а затем выводит на экран в первую строку первые пять элементов массива, во вторую — остальные пять элементов.
- Сформировать и вывести на экран массив a[1..10], элементы которого заданы датчиком случайных чисел на интервале от номера компьютера до 100. Вывести элементы массива в обратном порядке в строку через запятую. (Указание: цикл for … downto …)
- Напишите программу, которая позволяет вводить с клавиатуры вещественные элементы массива a[1..10], а затем выводит на экран значения в одну строку, отводя на каждое значение по 4 позиции.
- Элементы массива содержат значения температуры тела больного в течение недели. Составьте программу, которая заполняет массив случайными вещественными числами от 37.0 до 38.0 и выводит на экран значения температуры в столбец с одной десятичной цифрой.
- В течение недели температура составляла 15, 18, 18, 16, 19, 20, 17 градусов. Составьте программу, в которой описан массив констант и выводит значения температуры по дням в следующем виде:
1-й день: температура воздуха 15 градусов.
2-й день: ... и т.д.
Дополнительное задание
- Установите соответствие
Домашнее задание
§ 3.5 учебного пособия, ответить на вопросы после параграфа.
Примеры решения задач
Пример 1. Сформировать и вывести на экран последовательность из n элементов, заданных датчиком случайных чисел на интервале [-23, 34].
Program posled;
Var a: array[1..100] of integer;
i, n: integer;
Begin
Write ('Сколько элементов? ');
Readln (n);
For i:=1 to n do
begin // Диапазон чисел на промежутке [a,b]
a[i]:= Random(58)-23; // задается формулой: random(b-a+1)+a;
writeln (a[i],' ');
end;
End.
Пример 2. Изменим программу из Примера 1 так, чтобы на экран выводились элементы массива в обратном порядке (цикл for … downto …)
Program obrposled;
Var a: array[1..100] of integer;
i, n: integer;
Begin
Write ('Сколько элементов? ');
Readln (n);
For i:=n downto 1 do
begin
a[i]:= Random(58)-23;
writeln (a[i],' ');
end;
End.
Пример 3. Cмировать и вывести на экран последовательность из n вещественных элементов, заданных датчиком случайных чисел на интервале [40.0, 41.0).
Program realposled;
Var a: array[1..100] of real;
i, n: integer;
Begin
Write ('Сколько элементов? ');
Readln (n);
For i:=1 to n do
begin // Функция Random без аргумента генерирует случайные
a[i]:= 40+Random; // вещественные числа на промежутке [0,1)
writeln (a[i],' '); // т.о. случайное число из промежутка [z, z+1)
end; // получаем по формуле z+random;
End.
Пример 4. В качестве примера рассмотрим печать вещественного числа в различных форматах.
program write;
var
x: real;
begin
x := -12345.12345;
writeln('Печать вещественного числа':50);
writeln('Форматированный вывод:');
writeln(x:3:0);
writeln(x:3:1);
writeln(x:12:5);
writeln(x:20:5);
end.