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.