excel
Местный житель
- Регистрация
- 12 Май 2013
- Сообщения
- 154
- Реакции
- 22
- Автор темы
- #1
Помогите пожалуйста со следующей задачей по паскалю:
Пользователем вводятся матрицы A, B и C. Нужно посчитать матрицу D=A*A-B*C
По сути, программу я написал, но немного неправильно. Дело в том, что неправильно умножаю матрицу на матрицу. Матрица B*C умножается нормально, а вот A на A не хочет. Вроде как надо написать процедуру умножения матрицы на матрицу, но вот никак не пойму как это сделать. Надеюсь на вашу помощь, код ниже:
Пользователем вводятся матрицы A, B и C. Нужно посчитать матрицу D=A*A-B*C
По сути, программу я написал, но немного неправильно. Дело в том, что неправильно умножаю матрицу на матрицу. Матрица B*C умножается нормально, а вот A на A не хочет. Вроде как надо написать процедуру умножения матрицы на матрицу, но вот никак не пойму как это сделать. Надеюсь на вашу помощь, код ниже:
PHP:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
const nmax=5;
type tmas=array[1..nmax,1..nmax]of real;
var f,e,a,b,c,d:tmas;
n,i,j,k:integer;
q,r,s,pr:real;//opisanie globalnoi peremennobegin
procedure vvod(m:integer;var a:tmas);
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
write('a[',i,'][',j,']=');
readln(a[i,j]);
end;
end;
end; // vvod
procedure vivod(m:integer; a:tmas);
begin
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:8:2);
writeln;
end;
end; //vivod
begin
writeln('razmer matrica');
readln(n);
writeln('Vvod matrica A');
vvod(n,a);
writeln('vvod matrica B');
vvod(n,b);
writeln('vvod matrica C');
vvod(n,c);
writeln('matrica A');
vivod(n,a);
writeln('matrica B');
vivod(n,b);
writeln('matrica C');
vivod(n,c);
begin
for i:=1 to n do
for j:=1 to n do
begin
q:=a[i,j]*a[i,j];
f[i,j]:=q;
r:=b[i,j]*c[i,j];
e[i,j]:=r;
end;
end;
writeln('poluchennoe slozheni matric A*A = F');
vivod(n,f);
writeln('poluchennoe slozheni matric B*C = E');
vivod(n,e);
for i:=1 to n do
for j:=1 to n do
begin
s:=0;
for k:=1 to n do
s:=s+f[i,k]-e[k,j];
d[i,j]:=s;
end;
writeln('proizvedenie matric D=F-E');
vivod(n,d);
readln;
end.