uses crt;
const nmax=20;
var a,b:array[1..nmax,1..nmax] of integer;
n,i,j,imx:byte;
sm,x:integer;
begin
clrscr;
randomize;
repeat
write('Размер матрицы=');
readln(n);
until n in [1..nmax];
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(10)+1;
for j:=1 to n do
begin
sm:=0;
for i:=1 to n do
sm:=sm+a[i,j];//считаем суммы в столбцах
b[1,j]:=j;//номер столбца
b[2,j]:=sm;//сумма
end;
writeln('Исходная матрица:');
for i:=1 to n do
begin
write(' ':5);
for j:=1 to n do//вывод матрицы
write(a[i,j]:4);
writeln;
end;
write('Сумма');
for i:=1 to n do
write(b[2,i]:4);//вывод сумм
writeln;
writeln;
//сортировка двух строк матрицы по убыванию выбором максимального элемента
for i:=1 to n-1 do
begin
imx:=i;
for j:=i+1 to n do
if b[2,j]>b[2,imx] then imx:=j;
x:=b[2,i];
b[2,i]:=b[2,imx];
b[2,imx]:=x;
x:=b[1,i];
b[1,i]:=b[1,imx];
b[1,imx]:=x;
end;
writeln('Номера столбцов по убыванию сумм:');
write('Номер:');
for i:=1 to n do
write(b[1,i]:4);
writeln;
write('Сумма:');
for i:=1 to n do
write(b[2,i]:4);
readln
end.
Вариант 2
uses crt;
const nmax=20;
type matr=array[1..nmax,1..nmax] of integer;
procedure Vvod(var a:matr;var n:byte;var b:matr);
var i,j:byte;
sm:integer;
begin
repeat
write('Размер матрицы=');
readln(n);
until n in [1..nmax];
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(10)+1;
for j:=1 to n do
begin
sm:=0;
for i:=1 to n do
sm:=sm+a[i,j];{считаем суммы в столбцах}
b[1,j]:=j;{номер столбца}
b[2,j]:=sm;{сумма}
end;
writeln('Исходная матрица:');
for i:=1 to n do
begin
write(' ':5);
for j:=1 to n do{вывод матрицы}
write(a[i,j]:4);
writeln;
end;
write('Сумма');
for i:=1 to n do
write(b[2,i]:4);{вывод сумм}
writeln;
writeln;
end;
procedure Sort(var b:matr;n:byte);
var i,j,imx:byte;
x:integer;
begin
{сортировка двух строк матрицы по убыванию выбором максимального элемента}
for i:=1 to n-1 do
begin
imx:=i;
for j:=i+1 to n do
if b[2,j]>b[2,imx] then imx:=j;
x:=b[2,i];
b[2,i]:=b[2,imx];
b[2,imx]:=x;
x:=b[1,i];
b[1,i]:=b[1,imx];
b[1,imx]:=x;
end;
writeln('Номера столбцов по убыванию сумм:');
write('Номер:');
for i:=1 to n do
write(b[1,i]:4);
writeln;
write('Сумма:');
for i:=1 to n do
write(b[2,i]:4);
end;
var a,b:matr;
n:byte;
begin
clrscr;
randomize;
Vvod(a,n,b);
Sort(b,n);
readln
end.