Отсортировать диагонали матрицы параллельные главной - Pascal ABC
Формулировка задачи:
Дана матрица размерностью nxn, содержащая целые числа.
Отсортировать диагонали матрицы параллельные главной по убыванию элементов методом пузырька.
Спасибо!
Решение задачи: «Отсортировать диагонали матрицы параллельные главной»
textual
Листинг программы
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
n,i,j,k,m,x:integer;//n-размер, k-номер диагонали от главной(вверх и вниз), m-длина диагонали
//i,j-счетчики, x-буфер для обмена
begin
randomize;
repeat
write('Размер матрицы от 3 до ',nmax,' n=');
readln(n);
until n in [3..nmax];
writeln('Исходная матрица');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(100);
write(a[i,j]:3);
end;
writeln;
end;
for k:=0 to n-2 do //если саму главную не нужно, то k:=1
begin
m:=n-k;
for i:=1 to m do
for j:=m downto i+1 do
begin
if a[j-1,j+k-1]<a[j,j+k] then
begin
x:=a[j-1,j+k-1];
a[j-1,j+k-1]:=a[j,j+k];
a[j,j+k]:=x;
end;
if a[j-1+k,j-1]<a[j+k,j] then
begin
x:=a[j-1+k,j-1];
a[j-1+k,j-1]:=a[j+k,j];
a[j+k,j]:=x;
end;
end;
end;
writeln('Отсортированная матрица');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
end.