В квадратной матрице сгруппировать в порядке возрастания элементы каждой диагонали, параллельной главной, рассматривая эти элементы в направлении NW — SO. Реализовать два варианта программы: с использованием буферного массива и без него — Pascal(Паскаль)

uses crt;
var a:array[1..20,1..20]of integer;
    n,i,j,c,k,l,p:integer;
begin
clrscr;
randomize;
write('Vvedite razmernost matricy n= ');
readln(n);
Writeln('Matrica:');
for i:=1 to n do
   begin
     for j:=1 to n  do
       begin
        a[i,j]:=random(40)+10;
        write(a[i,j]:4);
       end;
     writeln;
   end;
for l:=1 to 2*n-1 do
  begin
    if l<=n then
      begin
       for i:=n-l+1 to n-1 do
       for j:=1 to l-1 do
       for c:=i+1 to n do
       for k:=j+1 to l do
       if (j=i-n+l)and(k=c-n+l)and(a[i,j]>a[c,k]) then
        begin
         p:=a[i,j];
         a[i,j]:=a[c,k];
         a[c,k]:=p;
        end;
       end
    else if l>n then
      begin
       for i:=1 to 2*n-l-1 do
       for j:=l-n+1 to n-1 do
       for c:=i+1 to 2*n-l do
       for k:=j+1 to n do
       if (j=i-n+l)and(k=c-n+l)and(a[i,j]>a[c,k]) then
        begin
         p:=a[i,j];
         a[i,j]:=a[c,k];
         a[c,k]:=p;
        end;
       end;
  end;
writeln('Sortirovka diagonalej:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
readln
end.

Leave a Comment

+ 77 = 79