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. 
				 
 
		