Для каждого столбца прямоугольной целочисленной матрицы определить сумму модулей его элементов, а затем сгруппировать столбцы в порядке возрастания этих сумм — Pascal(Паскаль)

uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
    n,m,i,j,s,k:byte;
    sm,x:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк=');readln(n);
until n in [1..nmax];
repeat
write('Количество столбцов=');readln(m);
until m in [1..nmax];
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(41)-19;
{считаем сумму модулей в столбце}
for j:=1 to m do
 begin
  sm:=0;
  for i:=1 to n do
  sm:=sm+abs(a[i,j]);
  a[n+1,j]:=sm;{и записываем в дополнительную строку}
 end;
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  write(' ':5);{5 пробелов в начале строки}
  for j:=1 to m do
  write(a[i,j]:5);{элементы строки}
  writeln;
 end;
writeln;
write('Сумма');{дополнительная строка с суммами}
for j:=1 to m do
write(a[n+1,j]:5);
writeln;
writeln;
{перестановка столбцов по возрастанию значений в последней строке}
for j:=1 to m-1 do
for k:=j+1 to m do
if a[n+1,j]>a[n+1,k] then
for i:=1 to n+1 do
 begin
  x:=a[i,j];
  a[i,j]:=a[i,k];
  a[i,k]:=x;
 end;
writeln('Столбцы упорядочены:');
for i:=1 to n do
 begin
  write(' ':5);
  for j:=1 to m do
  write(a[i,j]:5);
  writeln;
 end;
writeln;
write('Сумма');
for j:=1 to m do
write(a[n+1,j]:5);
readln
end.

Leave a Comment

− 6 = 4