Хотя неважно...
Код
const
rows = 3;
columns = 5;
{ Если матрица квадратная, можно установить columns = rows; }
type
matrix =
array[1 .. rows, 1 .. columns] of integer;
procedure find_nil(m: matrix;
var col: integer);
var
i, j: integer;
begin
for i := 1 to rows do
for j := 1 to columns do
if m[i, j] = 0 then col := j
end;
procedure find_max(m: matrix;
var col: integer);
var
i, j, maxval: integer;
begin
maxval := -maxint;
for i := 1 to rows do
for j := 1 to columns do
if maxval < abs(m[i, j]) then
begin
maxval := abs(m[i, j]); col := j
end;
end;
{ Замена столбцов }
procedure change_cols(var m: matrix;
first, second: integer);
var
i, T: integer;
begin
for i := 1 to rows do
begin
T := m[i, first];
m[i, first] := m[i, second];
m[i, second] := T
end;
end;
{ Вывод матрицы }
procedure printMatrix(m: matrix);
var i, j: integer;
begin
for i := 1 to rows do
begin
for j := 1 to columns do
write( m[i, j]:4 );
writeln
end;
end;
var
m: matrix;
i, j, i_nil, i_max: integer;
begin
for i := 1 to rows do
begin
writeln( 'row #', i );
for j := 1 to columns do
begin
write( 'm[', i, ', ', j, '] >');
readln(m[i, j]);
end;
writeln;
end;
writeln( 'Перед заменой столбцов:' );
printMatrix(m);
find_nil(m, i_nil);
find_max(m, i_max);
change_cols(m, i_nil, i_max);
writeln( 'После замены столбцов:' );
printMatrix(m);
end.