B матрице С[1..N,1..M] переставить столбцы по возрастанию сумм чисел в каждом столбце матрицы — Pascal(Паскаль)

uses crt;
const nmax=20;
var c:array[1..nmax,1..nmax] of integer;
    n,m,i,j,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
c[i,j]:=random(10);
{считаем сумму  в столбце}
for j:=1 to m do
 begin
  sm:=0;
  for i:=1 to n do
  sm:=sm+c[i,j];
  c[n+1,j]:=sm;{и записываем в дополнительную строку}
 end;
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  write(' ':5);{5 пробелов в начале строки}
  for j:=1 to m do
  write(c[i,j]:5);{элементы строки}
  writeln;
 end;
writeln;
write('Сумма');{дополнительная строка с суммами}
for j:=1 to m do
write(c[n+1,j]:5);
writeln;
writeln;
{перестановка столбцов по возрастанию значений в последней строке}
for j:=1 to m-1 do
for k:=j+1 to m do
if c[n+1,j]>c[n+1,k] then
for i:=1 to n+1 do
 begin
  x:=c[i,j];
  c[i,j]:=c[i,k];
  c[i,k]:=x;
 end;
writeln('Столбцы упорядочены:');
for i:=1 to n do
 begin
  write(' ':5);
  for j:=1 to m do
  write(c[i,j]:5);
  writeln;
 end;
writeln;
write('Сумма');
for j:=1 to m do
write(c[n+1,j]:5);
readln
end.

Leave a Comment

− 2 = 5