Найти произведение Х=Y(5,3)*Z(3,5) и Q=Z(3,5)*X(5,5) и результаты матрицы X и Q записать в файл a3. Матрица Y вводится из файла a2. Матрица Z вводится из файла a1.
Первый столбец матрицы Y, Второй столбец матрицы Z и четвертый столбец матрицы Х1 умножить на Р, где Р=max (произведение Х[i,j]; произведение Y[i,j]; произведение Z[i,j]). Преобразованные матрицы записать в те же файлы.
Найти произведение ненулевых элементов каждой матрицы. Результаты записать в файл a4
Смог сделать только так:
Код: Выделить всё
uses crt;
var y,z,x:matrix; f:text; Pm:real; i,k:integer;
procedure enter(name:string; k,j:byte; var Q:mas);
var fa:text; t,h:byte;
begin
assign(fa,name);
reset(fa);
for t:=1 to k do
for h:=1 to j do read(fa, q[t,h]);
close(fa);
end;
begin
clrscr;
enter('C:\a1',3,5,z);
for i:=1 to 5 do begin writeln;
for j:=1 to 3 do write(y[i,j]:8:2);
end;
readln;
end.
procedure prv(name:string; k,l:byte; var p,o:mas);
var i,t,h:byte; x,s:real; r:mas; f:text;
begin
assign(f,name);
append(f);
for i:=1 to k do begin writeln(f);
for t:=1 to k do begin
s:=0;
for h:=1 to l do
s:=s+p[i,h]*o[h,t];
r[i,t]:=s;
write(f,r[i,t]:8:2);
end;
end;
writeln(f);
close(f);
end;
function pro(n,m:byte; var d:mas):real;
var i,j:byte; s:real;
begin
s:=0;
for i:=1 to n do
for j:=1 to m do s:=s+d[i,j];
pro:=s;
end;
program mod4;
uses crt;
var P,C,b,c:real;
function Pmax(x,y,z:real):real;
begin
Pmax:=x;
if (x<y)and(z<y) then Pmax:=y;
if (z>x)and(z>y) then Pmax:=z;
end;
procedure UMN(name:string; p:real; n,m,h:byte; var x:mas);
var i,j:byte; f:text; y:real;
begin
assign(f,name);
append(f);
for i:=1 to n do x[i,m]:=x[i,m]*p;
writeln(f);
for i:=1 to n do begin writeln(f);
for j:=1 to h do write(f,x[i,j]:8:2);
end;
close(f);
end;
procedure prnot0(name,name1:string; k,n,m,logik:byte);
var i,j:byte; x,p:real; f,fa:text; q:mas;
begin
assign(f,name);
assign(fa,name1);
append(f);
reset(fa);
if logik=1 then for i:=1 to k do read(fa,x);
for i:=1 to n do
for j:=1 to m do read(fa,q[i,j]);
close(fa);
p:=1;
for i:=1 to n do
for j:=1 to m do if q[i,j]<>0 then p:=p*q[i,j];
writeln(f,p:8:9);
close(f);
end;
Begin
assign(f,'C:\a3');
rewrite(f);
close(f);
assign(f,'C:\a4');
rewrite(f);
close(f);
assign(f,'C:\a2.txt');
rewrite(f);
close(f);
assign(f,'C:\a3.txt');
rewrite(f);
close(f);
assign(f,'C:\a4.txt');
rewrite(f);
close(f);
begin
enter('C:\a1',5,3,y);
enter('C:\a2',3,5,z);
prv('C:\a3',5,3,y,z);
prv('C:\a3',3,5,z,y);
writeln('Задача выполнена... для выхода нажмите кл. <Enter>');
writeln('Результаты работы находятся в файле A3 на диске C:\');
readln;
enter('C:\a3',5,5,x);
Pm:=Pmax(pro(3,5,y),pro(5,3,z), pro(5,5,x)); {Здесь появляется ошибка type mismatch}
umn('C:\a1',pm,3,4,5,z);
umn('C:\a2',pm,5,1,3,y);
umn('C:\a3',pm,5,4,5,x);
writeln('Задача выполнена... для выхода нажмите кл. <Enter>');
writeln('Результаты работы находятся в файлах A1,A2,A3 на диске C:\');
readln;
prnot0('C:\a4','C:\a1',0,3,5,0);
prnot0('C:\a4','C:\a2',0,5,3,0);
prnot0('C:\a4','C:\a1',15,3,5,1);
prnot0('C:\a4','C:\a2',15,5,3,1);
prnot0('C:\a4','C:\a3',0,5,5,0);
prnot0('C:\a4','C:\a3',9,3,3,1);
prnot0('C:\a4','C:\a3',25,5,5,1);
writeln('Задача выполнена... для выхода нажмите кл. <Enter>');
writeln('Результаты работы находятся в файле A4 на диске C:\');
readln;
end.