Отсортировать диагонали матрицы параллельные главной - Pascal ABC

Формулировка задачи:

Дана матрица размерностью nxn, содержащая целые числа. Отсортировать диагонали матрицы параллельные главной по убыванию элементов методом пузырька. Спасибо!

Код к задаче: «Отсортировать диагонали матрицы параллельные главной - Pascal ABC»

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.

5   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы