writeln;
end;
close(f); {закрытие файла 'matr.inp' для чтения}
writeln;
for i:=1 to na do {транспонирование матрицы А}
for j:=1 to ma do AT[i,j]:=A[j,i];
writeln('матрица At='); {вывод матрицы AT на экран}
for i:=1 to na do begin
for j:=1 to ma do write(AT[i,j]:5:0);
writeln;
end;
writeln;
for i:=1 to na do {умножение транспонированной матрицы А на матрицу В}
for j:=1 to nb do begin
s:=0;
for k:=1 to mb do s:=S+AT[i,k]*B[k,j];
ATB[i,j]:=s;
end;
writeln('матрица AT*B='); {вывод матрицы ATB на экран}
for i:=1 to na do begin
for j:=1 to nb do write(ATB[i,j]:5:0);
writeln;
end;
writeln;
for i:=1 to na do {разность между полученным произведением и матрицей 3С}
for j:=1 to nc do ATB3C[i,j]:=ATB[i,j]-3*C[i,j];
writeln('матрица AT*B-3C='); {вывод матрицы ATB3C на экран}
for i:=1 to na do begin
for j:=1 to nc do write(ATB3C[i,j]:5:0);
writeln;
end;
writeln;
for i:=1 to nc do {транспонирование результата}
for j:=1 to na do ATB3CT[i,j]:=ATB3C[j,i];
writeln('матрица (AT*B-3C)T='); {вывод матрицы ATB3CT на экран}
for i:=1 to nc do begin
for j:=1 to na do write(ATB3CT[i,j]:5:0);
writeln;
end;
end. {конец программы}
II. с использованием процедур
program matrix;
{вычисление матричного выражения с использованием процедур}
type mas=array [1..10,1..10] of real; {описание новой переменной}
{описание массивов и переменных}
var A,B,C,AT,ATB,ATB3C,ATB3CT: mas;
i,j,ma,mb,mc,na,nb,nc: integer;
f: text; {описание файловой переменной}
{подпрограмма-процедура для транспонирования матрицы}
procedure tr(m,n:integer;A:mas;var AT:mas); {заголовок}
var i,j: integer; {описание локальных переменных подпрограммы tr}
begin {начало операторной части подпрограммы tr}
for i:= 1 to m do
for j:= 1 to n do AT[j,i]:=A[i,j]; {транспонирование матрицы}
end; {конец подпрограммы tr}
{подпрограмма-процедура для умножения матриц}
procedure mult(m,l,n:integer;AT,B:mas;var ATB:mas); {заголовок}
{описание локальных переменных подпрограммы mult}
var i,j,k: integer;
s: real;
begin {начало операторной части подпрограммы mult}
for i:= 1 to m do
for j:= 1 to n do begin {начало составного оператора}
s:= 0;
for k:= 1 to l do s:=s+AT[i,k]*B[k,j];
ATB[i,j]:=s;
end; {конец составного оператора}
end; {конец подпрограммы mult}
{подпрограмма-процедура для разности матриц}
procedure sum(m,n:integer;ATB,C: mas;var ATB3C:mas); {заголовок}
var i,j: integer; {описание локальных переменных подпрограммы sum}
begin {начало операторной части подпрограммы sum}
for i:= 1 to m do
for j:= 1 to n do ATB3C[i,j]:=ATB[i,j]-3*C[i,j]; {разность матриц}
end; {конец подпрограммы mult}
{подпрограмма-процедура для вывода матрицы на экран}
procedure mout(m,n:integer;D:mas); {заголовок}
var i,j: integer; {описание локальных переменных подпрограммы mout}
begin {начало операторной части подпрограммы sum}
for i:= 1 to m do begin
for j:= 1 to n do write(D[i,j]:5:0);
writeln;
end{конец операторной части подпрограммы mult}
end; {конец подпрограммы mout}
{основная программа}
begin {начало операторной части}
{установка соответствия файловой переменной с файлом 'matr.inp'}
assign(f,'matr.txt');
reset(f); {открытие файла 'matr.inp' для чтения}
for i:= 1 to ma do {ввод размеров и элементов матрицы А из файла 'matr.inp'}
for j:= 1 to na do read(f,A[i,j]);
read(f,mb,nb); {ввод размеров и элементов матрицы В из файла 'matr.inp'}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.