Дана вещественная матрица размером 4*4. упорядочить ее столбцы по убыванию сумм их элементов — Pascal(Паскаль)

uses crt;

const
  n = 4;

var
  a: array [1 .. n + 1, 1 .. n] of real;
  i, j, k: byte;
  sm, x: real;

begin
  clrscr;
  randomize;
  for i := 1 to n do
    for j := 1 to n do
      a[i, j] := 10 * random;
  { считаем сумму в столбце }
  for j := 1 to n do
  begin
    sm := 0;
    for i := 1 to n do
      sm := sm + a[i, j];
    a[n + 1, j] := sm; { и записываем в дополнительную строку }
  end;
  writeln('Исходная матрица:');
  for i := 1 to n do
  begin
    write(' ':6); { 5 пробелов в начале строки }
    for j := 1 to n do
      write(a[i, j]:6:2); { элементы строки }
    writeln;
  end;
  writeln;
  write('Сумма '); { дополнительная строка с суммами }
  for j := 1 to n do
    write(a[n + 1, j]:6:2);
  writeln;
  writeln;
  { перестановка столбцов по убыванию значений в последней строке }
  for j := 1 to n - 1 do
    for k := j + 1 to n 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(' ':6);
    for j := 1 to n do
      write(a[i, j]:6:2);
    writeln;
  end;
  writeln;
  write('Сумма ');
  for j := 1 to n do
    write(a[n + 1, j]:6:2);
  readln

end.

Leave a Comment

5 + 2 =