Программа
сравнения в заданной
вещественнозначной матрице A (20x20)
максимума по четным строкам с минимумом
по нечетным.
|
Program
pr30 (Input, Output);
|
Объявление
имени программы
|
Label
1;
|
Блок
объявления меток: задаем метку 1
|
Var
|
Блок
объявления глобальных переменных
|
A
: Array [1..20, 1..20] Of Real;
|
Переменная
A - матрица действительных чисел
максимального размера 20x20
|
M,
N :
Integer;
|
M
- число столбцов, а N - число строк
вводимой матрицы
|
i,
j
: Integer;
|
Переменные
i, j - параметры циклов
|
Min,
Max
: Real;
|
Min
- минимум по нечетным строкам, Max -
максимум по четным
|
|
|
Begin
|
Начало
тела программы
|
|
|
WriteLn
|
Формулировка
цели алгоритма
|
('PASCAL:
Сравнение максимума по четным строкам с
минимумом по нечетным.');
|
Формулировка
цели алгоритма
|
Write
('Введите число строк:
N = ');
|
Вывод
запроса N - числа строк исходной матрицы
|
ReadLn
(N);
|
Ввод
N
|
Write
('Введите число столбцов: M = ');
|
Вывод
запроса M - числа столбцов исходной
матрицы
|
ReadLn
(M);
|
Ввод
M
|
WriteLn
('Введите элементы матрицы:');
|
Запрос
ввода элементов самой исходной матрицы
|
For
i := 1 To N Do
|
Цикл
для i от 1 до N, где i - номер очередной
строки
|
For
j := 1 To M Do
|
Цикл
для j от 1 до M, где j - номер очередного
столбца
|
Begin
|
Начало
тела цикла
|
Write
('A[', i, ',', j, '] = ');
|
Вывод
удобной подсказки
|
ReadLn
(A [i, j] );
|
Ввод
очередного элемента - A[i,j]
|
End;
|
Конец
тела цикла
|
|
|
Min
:= A [1, 1];
|
Начальное
значение минимума по нечетным - 1-ый
элемент 1-ой строки
|
Max
:= A [2, 1];
|
Начальное
значение максимума по четным - 1-ый
элемент 2-ой строки
|
|
|
For
i := 1 To N Do
|
Цикл
для i от 1 до N, где i - номер строки
|
For
j := 1 To M Do
|
Цикл
для j от 1 до M, где j - номер столбца
|
Begin
|
Начало
тела цикла
|
If
Odd (i) Then
|
Проверяем
число i на четность - если оно четное, то
выполнять...
|
Begin
|
Начало
блока, выполняющегося при соблюдении
условия
|
If
A [i, j] < Min Then
|
Если
элемент A[i,j]
меньше Min,
то...
|
Min
:= A [i, j];
|
Заносим
элемент A[i,j]
в Min
|
End
|
Конец
условного блока
|
Else
|
При
нарушении условия...
|
Begin
|
Начало
блока, выполняющегося при нарушении
условия
|
If
A [i, j] > Max Then
|
Если
элемент A[i,j]
больше Max,
то...
|
Max
:= A [i, j];
|
Заносим
элемент A[i,j]
в Max
|
End;
|
Конец
условного блока
|
End;
|
Конец
тела цикла
|
|
|
If
Abs (Max - Min) < 0.0001 Then
|
Если
Max и Min отличаются на 0.0001, т.е.
практически равны, то...
|
Begin
|
Начало
условного блока
|
WriteLn
('Максимум и минимум совпадают и равны: ',
Max: 6: 2);
|
Вывод
сообщения пользователю о совпадении
максимума и минимума
|
Goto
1;
|
Переход
на метку 1
|
End;
|
Конец
условного блока
|
|
|
If
Max > Min Then
|
Если
максимум больше минимума, то выполнять...
|
WriteLn
('Наибольшим является максимум по четным
строкам: ', Max: 6: 2);
|
Вывод
соответствующего сообщения
|
Else
|
В
противном случае
|
WriteLn
('Наибольшим является минимум по
нечетным строкам:', Min: 6: 2);
|
Вывод
соответствующего сообщения
|
|
|
1:
ReadLn;
|
Метка
1: ожидание нажатия клавиши Enter для
завершения
|
End.
|
Конец
программы.
|