Решение
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