program Lab11;
type
Matr=array[1..8,1..8] of real;
var
a,b,c: matr;
n,m:byte;
r,z:char;
Procedure vvod(var x:matr;y:char);{Процедура ввода матрицы с клавиатуры}
var
i,j:byte;
begin
for i:=1 to n do
for j:=1 to m do
begin
writeln('Введите элемент матрицы ',y,i,j);
readln(x[i,j]);
end;
end;
{Процедура ввода матрицы из файла}
Procedure vvodF(var a,b:matr);
var
inp:text;
i,j:byte;
begin
assign(inp,'data.txt');
reset(inp);
read(inp,n,m);
for i:=1 to n do
for j:=1 to m do
read(inp,a[i,j]);
for i:=1 to n do
for j:=1 to m do
read(inp,b[i,j]);
close(inp);
end;
Procedure outF(var x:matr);{Процедура вывода матрицы в файл}
var out : text;
i,j:byte;
begin
assign(out,'rezultat.dat');
rewrite(out);
for i:=1 to n do begin
{writeln(out);}
for j:=1 to m do
write(out,x[i,j]);
end;
close(out);
end;
Procedure OutMatr(x:matr); { процедура вывода матрицы на экран }
var i,j:byte;
begin
write(' ');
for j:=1 to m do write (i:8);
writeln;
write(' |');
for j:=1 to m do write ('--------');
writeln;
for i:=1 to n do
begin
write (i:5,'|');
for j:=1 to m do write(x[i,j]:5);
writeln;
end;
end;
procedure axb(var ab:matr);{процедура умножения матриц AB }
var s:real; i,j,k:byte;
begin
for i:=1 to n do
for j:=1 to m do
begin
s:=0;
for k:=1 to n do
s:=s+a[k,i]*b[j,k];
c[i,j]:=s;
end;
end;
procedure rez(var c:matr); {функция вычисления С}
var
i,j:byte;
begin
for i:=1 to n do
for j:=1 to m do
c[i,j]:=2*(a[i,j]+0.5*b[i,j])+c[i,j];
end;
begin
writeln('Для ввода данных с клавиатуры нажмите <K>, из файла - <F>');
read(r);
case r of 'f':vvodF(a,b);
'k':begin
writeln('ВВедите размерность матриц NxM ');
readln(n,m);{Вводим размерность матриц NxM};
vvod(a,'a');
vvod(b,'b');
end;
end;
{ вывод исходных матриц }
writeln;
writeln('a:');
OutMatr(a);
writeln;
writeln('b:');
OutMatr(b);
writeln;
{вычисляем произведение матриц А и В}
axb(c);
{вычисляем С по формуле}
rez(c);
{ вывод результата }
writeln('с:');
OutMatr(c);
writeln;
writeln('Расчет окончен. Сохранить результат в файл? Y/N');
readln(z);
if z = 'y' then
begin
outF(c);
writeln ('Pезультат сохранен в файл "RESULTAT.TXT"');
readln;
end;
end.