Поменять наибольший элемент среди стоящих на диагоналях с элементом, стоящим на пересечении диагоналей - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д