Решение
type mas2=array[1..20, 1..20] of integer;
{Формирование массива заданного размера с помощью файла}
procedure create(var T: Text; var n: byte; var a: mas2);
var i, j: byte;
begin
write('Введите размер матрицы: '); readln(n);
for i:=1 to n do
for j:= 1 to n do
a[i, j]:= 0; {начальная инициализация всей таблицы нулями}
reset(T);
i:=1;
while not seekeof(T) and (i<=n) do
begin
j:=1;
while not seekeof(T) and (j<=n) do
begin
read(T, a[i, j]);
j:= j+1;
end;
i:=i+1
end
end;
{вывод таблицы на экран}
procedure print(const n: byte; const a: mas2);
var i, j: byte;
begin
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(a[i, j]:5);
end;
writeln
end;
{процедура, решающая задачу из условия}
procedure solution(const n: byte; var a: mas2);
var i, j, jmin, jmax, p, min, max, vsp: integer;
begin
p:=1;
for i:=1 to n do
if a[i, 1] <> 0 then p:=p*a[i, 1]; {вычислили произведение элементов первого столбца}
jmin:=1;
jmax:=1;
min:=p;
max:=p;
for j:=2 to n do
begin
p:=1;
for i:=1 to n do
if a[i, j] <> 0 then p:=p*a[i, j]; {вычислили произведение элементов j-го столбца}
if pmax then begin max :=p; jmax:=j end;
end;
for i:=1 to n do
begin
vsp:=a[i, jmin];
a[i, jmin]:=a[i, jmax];
a[i, jmax]:=vsp;
end;
end;
var T: Text; a: mas2; n: byte; s: string;
begin
write('Введите имя файла: '); readln(s);
assign(T, s);
create(T, n, a);
writeln('Исходная матрица: ');
print(n, a);
solution(n, a);
writeln;
writeln('=============================================================');
writeln;
writeln('Результирующая матрица: ');
print(n, a);
end.
Результат работы программы
Пусть исходный файл имеет имя 1.txt, содержится в той же папке, что и
текст программы и содержит следующие данные
23 -7
0
1
-1
13
14 2 1 1 1 9 -5
1 2 0 0 0 13 6 7 8 9
-1 -2 -5
9
Приведем работу программы для нескольких разных n
Введите имя файла: 1.txt
Введите размер матрицы: 3
Исходная матрица:
23 -7 0
1 -1 13
14 2 1
=============================================================
Результирующая матрица:
0 -7 23
13 -1 1
1 2 14
Введите имя файла: 1.txt
Введите размер матрицы: 4
Исходная матрица:
23 -7 0 1
-1 13 14 2
1 1 1 9
-5 1 2 0
=============================================================
Результирующая матрица:
-7 23 0 1
13 -1 14 2
1 1 1 9
1 -5 2 0
Введите имя файла: 1.txt
Введите размер матрицы: 6
Исходная матрица:
23 -7 0 1 -1 13
14 2 1 1 1 9
-5 1 2 0 0 0
13 6 7 8 9 -1
-2 -5 9 0 0 0
0 0 0 0 0 0
=============================================================
Результирующая матрица:
13 -7 0 1 -1 23
9 2 1 1 1 14
0 1 2 0 0 -5
-1 6 7 8 9 13
0 -5 9 0 0 -2
0 0 0 0 0 0
Введите имя файла: 1.txt
Введите размер матрицы: 10
Исходная матрица:
23 -7 0 1 -1 13 14 2 1 1
1 9 -5 1 2 0 0 0 13 6
7 8 9 -1 -2 -5 9 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
=============================================================
Результирующая матрица:
-7 23 0 1 -1 13 14 2 1 1
9 1 -5 1 2 0 0 0 13 6
8 7 9 -1 -2 -5 9 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
© Шестаков А.П., 2010