Поменять местами min и max элементы в матрице на диагоналях, параллельных главной - PascalABC.NET
Формулировка задачи:
Собственно, не могу сделать указанное требование для диагоналей ниже главной. Главная диагональ тоже попадает под это требование.
В программе сделано для верхних и главной.
Выручите кодом для диагоналей, паралл. главной и ниже главной.
Конкретная постановка задачи:
...получить матрицу. В полученной матрице необходимо в каждой диагонали матрицы, параллельной главной, включая главную, поменять местами max и min.
Решение задачи: «Поменять местами min и max элементы в матрице на диагоналях, параллельных главной»
textual
Листинг программы
const
n = 5;
begin
Randomize;
var a : array [1..n, 1..n] of Integer;
for var Row := 1 to n do
for var Col := 1 to n do
a[Row, Col] := Random(-9,+9);
WriteLn('Исходная:');
for var Row := 1 to n do
begin
for var Col := 1 to n do
Write(a[Row, Col]:3);
WriteLn;
end;
WriteLn;
/// Поиск и обмен min и max диагоналей
for var Start := 1 to N-1 do // Последнюю из одного элемента рассматривать не имеет смысла
begin
var min := 0; var max := 0;
for var i := 1 to N - Start do
if A[Start + i, 1 + i] < A[Start + min, 1 + min] then min := i
else if A[Start + i, 1 + i] > A[Start + max, 1 + max] then max := i;
if min <> max then
Swap(A[Start + min, 1 + min], A[Start + max, 1 + max]);
end;
WriteLn('Изменённая:');
for var Row := 1 to n do
begin
for var Col := 1 to n do
Write(a[Row, Col]:3);
WriteLn;
end;
WriteLn;
end.
Объяснение кода листинга программы
- Объявлена константа
n = 5, которая определяет размер матрицы. - Инициализируется генератор случайных чисел
Randomize. - Объявлена двумерная матрица
aтипаIntegerразмером[1..n, 1..n]. - В цикле
forзаполняются ячейки матрицыaслучайными числами в диапазоне от-9до+9. - Выводится сообщение
Исходная:и строка из пробелов, в которую поочередно выводятся значения ячеек матрицыaчерез пробел. - Запускается цикл
for, который ищет минимальное и максимальное значение на главной диагонали матрицыa. - Если найденные значения не совпадают, то происходит обмен ячеек с этими значениями.
- Выводится сообщение
Изменённая:и строка из пробелов, в которую поочередно выводятся значения ячеек матрицыaчерез пробел.