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