const
imax = 9;
type
vector = array[1..imax] of real;
matrix = array[1..imax] of vector;
procedure inp_size(s: string; var x: integer; k: integer);
begin
repeat
write(s + ' [1..', k, ']: ');
readln(x)
until x in [1..k]
end;
procedure out_mat(s: string; const x: matrix; m, n: integer);
var i, j: integer;
begin
writeln(s);
for i := 1 to m do
begin
for j := 1 to n do write(' ', x[i, j]:9);
writeln
end;
write('Нажмите <Enter>');
readln
end;
procedure swap_col(var x: matrix; f, s, n: integer);
var i: integer;
t: real;
begin
for i := 1 to n do
begin
t := x[i, f];
x[i, f] := x[i, s];
x[i, s] := t
end
end;
var
mat: matrix;
vec: vector;
m, n, i, j, k, t, p, min: integer;
begin
inp_size('Количество строк', m, imax);
inp_size('Количество столбцов', n, imax);
writeln('Введите элементы мтрицы:');
for i := 1 to m do
for j := 1 to n do
begin
write('mat[', i, ', ', j, '] = ');
readln(mat[i, j])
end;
out_mat('Исходная матрица:', mat, m, n);
k := 0;
for j := 1 to n do
for i := 1 to m do
if mat[i, j] < 0
then begin
inc(k);
vec[k] := mat[i, j];
break
end;
if k > 0
then begin
min := 1;
writeln('Вектор:');
for i := 1 to k do
begin
write(' ', vec[i]:9);
if vec[i] < vec[min] then min := i
end;
writeln;
writeln('Индекс минимального элемента вектора: ', min)
for i := 1 to m do
for j := 1 to n do
mat[i, j] := mat[i, j] * min;
out_mat('Преобразованная матрица:', mat, m, n)
end
else writeln('Матрица не содержит отрицательных элементов.');
writeln('Введите номера столбцов, которые нужно обменять:');
inp_size('Первый столбец', t, m);
inp_size('Второй столбец', p, m);
swap_col(mat, t, p, n);
out_mat('Преобразованная матрица:', mat, m, n)
end.