Коллеги, вот что у меня получилось с учетом Ваших советов и вроде рабоает.
Правда, я не смог справиться с глобальной переменной массива Matr в первой процедуре ввода массива из файла.
Может чего подскажите.
Кстати, изменил размерность до 1000Х2000 программа перстала работать.
Исходный код
program Matrix_Process;
(******************************************************
* Демонстрация работы с двумерными массивами *
* (матрицами) *
******************************************************)
const
NMAX = 20;
MMAX = 20;
type
Matrix = array [1..NMAX, 1..MMAX] of real;
var
Matr, M1,M2: Matrix;
n,m: integer;
(***************************************************
Процедура ввода матрицы из текстового файла
****************************************************)
procedure EnterMatrixFromFile;
var
i,j: integer;
f:text;
begin
assign(f,'matrixdat.txt');
reset(f);
i := 1;
while not eof(f) do
begin
j := 1;
while not eoln(f) do
begin
read(f,Matr[i, j]);
writeln('Matr[',i,',',j,']',Matr[i,j]);
inc(j);
end;
readln(f); inc(i);
end;
close(f);
n:=i-1;
m:=j-1;
writeln('n=',n,',','m=',m);
end;
(******************************************************
Процедура печати матрицы реальной размерности (n,m) на
экране, располагающая одну строку матрицы на одной строке
экрана
******************************************************)
procedure PrintMatrix (Matrix_: Matrix; nn, mm: integer);
var
i, j: integer;
begin
for i:=1 to nn do begin
for j:=1 to mm do
writeln('Matrix_[',i,',',j,']',Matrix_[i,j]);
writeln;
end;
end;
(******************************************************
Процедура вывода квадратной матрицы размерности (n,n)
в текстовый файл
******************************************************)
procedure PrintMatrixToFile (Matrix_: Matrix; nn: integer);
var
i, j: integer;
g:text;
begin
assign(g,'matres.txt');
rewrite(g);
for i:=1 to nn do
begin
for j:=1 to nn do
begin
write (g,Matrix_[i,j]);
end;
writeln(g);
end;
close(g);
end;
procedure Funky(Matrix_: Matrix; nn, mm: integer);
var
i,j,k,p: integer;
Sum1,Sum2,Sum3: real;
Funk:Matrix;
begin
for k:=1 to nn do
begin
for p:=1 to nn do
begin
Sum1:=0;
Sum2:=0;
Sum3:=0;
for j:=1 to mm do
begin
Sum1:=Sum1+Matrix_[k,j];
Sum2:=Sum2+Matrix_[p,j];
end;
for j:=1 to mm do
begin
If (Matrix_[k,j]+Matrix_[p,j])<>0 then
Sum3:=Sum3 + 1/(Matrix_[k,j]+Matrix_[p,j])*
(Matrix_[k,j]/Sum1-Matrix_[p,j]/Sum2)*
(Matrix_[k,j]/Sum1-Matrix_[p,j]/Sum2)
else
Sum3:=Sum3;
end;
Funk[k,p]:=Sum1*Sum2*Sum3;
writeln('Funk[',k,',',p,']',Funk[k,p]);
end;
end;
PrintMatrixToFile(Funk,nn);
end;
begin
EnterMatrixFromFile;
readln;
PrintMatrix (Matr,n,m);
PrintMatrixToFile(Matr,n);
readln;
Funky (matr,n,m);
readln;
end.