Поменять наибольший элемент среди стоящих на диагоналях с элементом, стоящим на пересечении диагоналей - Turbo Pascal
Формулировка задачи:
Дана действительная квадратная матрица A порядок N, где N - заданное натуральное нечетное число. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его с элементом, стоящим на пересечении диагоналей.
Решение задачи: «Поменять наибольший элемент среди стоящих на диагоналях с элементом, стоящим на пересечении диагоналей»
textual
Листинг программы
- var
- a: Array[Byte, Byte] Of Real;
- temp: Real;
- i, j, n, iMax, jMax: Byte;
- begin
- repeat
- Write('Input n (>0;odd): ');
- ReadLn(n);
- until ((n > 0) And Odd(n));
- Randomize();
- iMax := 0; jMax := 0;
- for i := 0 to n - 1 do
- begin
- for j := 0 to n - 1 do
- begin
- a[i, j] := Random * 198 - 99;
- if (((i = j) Or (n = i + j + 1)) And (a[i, j] > a[iMax, jMax]))
- then
- begin
- iMax := i;
- jMax := j;
- end;
- Write(a[i, j]:7:2);
- end;
- WriteLn;
- end;
- temp := a[iMax, jMax];
- a[iMax, jMax] := a[n div 2, n div 2];
- a[n div 2, n div 2] := temp;
- WriteLn('----------------------------------------------');
- for i := 0 to n - 1 do
- begin
- for j := 0 to n - 1 do
- Write(a[i, j]:7:2);
- WriteLn;
- end;
- end.
Объяснение кода листинга программы
- Создается переменная
a
, которая представляет собой массив типаArray[Byte, Byte] Of Real
. Это означает, что массив содержитByte
элементы, каждый из которых являетсяReal
числом. - Создаются две переменные
temp
иiMax
, которые будут использоваться для временного хранения значения максимального элемента и его индекса. - Создаются две переменные
jMax
, которые будет использоваться для временного хранения индекса максимального элемента. - В цикле
repeat
выполняется следующая последовательность действий:- Пользователю предлагается ввести число
n
(нечетное число больше 0). - Проверяется, что введенное число является нечетным и большим, чем 0.
- С помощью функции
Randomize()
инициализируется генератор случайных чисел. - Инициализируются переменные
iMax
иjMax
значением 0. - Запускается цикл
for
, который выполняетсяn
раз. - Внутри цикла
for
запускается вложенный циклfor
, который выполняетсяn-1
раз. - Внутри вложенного цикла
for
вычисляется случайное числоa[i, j]
и присваивается соответствующему элементу массиваa
. - Если текущий элемент массива
a[i, j]
больше текущего максимального элементаa[iMax, jMax]
, то обновляется значениеiMax
иjMax
. - После окончания вложенного цикла
for
выводится значениеa[i, j]
с помощью функцииWrite()
. - Выводится символ новой строки с помощью функции
WriteLn()
.
- Пользователю предлагается ввести число
- После завершения внешнего цикла
for
вычисляется значениеtemp
путем копирования значенияa[n div 2, n div 2]
в переменнуюtemp
. - Значение
a[n div 2, n div 2]
заменяется значениемtemp
. - Выводится символ новой строки с помощью функции
WriteLn()
. - Завершается основной цикл
repeat
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д