proszę o sprawdzenie bo źle wypisuje mi iloczyn macierzy
const
max = 100; {maksymalna wielkosc tablicy}
type
tablica = array [1..max,1..max] of integer;
var
n,i,j : integer;
A,B,C : tablica;
Procedure wczytaj_tablice ( var tab : tablica );
var
i,j : integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
write('Podaj wartosc w polu [',i,',',j,'] : ');
readln(tab[i,j]);
end;
end;
end;
Procedure wyswietl_tablice ( var tab : tablica );
var
i,j : integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
write(tab[i,j]:4, #9);
end;
writeln;
end;
end;
procedure Transponuj(var A,B : tablica; n : integer);
var i,j : integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
B[j,i]:=A[i,j];
end;
end;
end;
procedure iloczyn(i,j:integer;A,B:tablica;var C:tablica);
var k,iloczyn:integer;
begin
for i:=1 to n do
for j:=1 to n do
begin
for k:=1 to n do
begin
iloczyn:=a[i,j]*b[j,k];
c[i,k]:=iloczyn;
end;
end;
end;
BEGIN
writeln('=====================================================================');
writeln('Program wczytuje tablice o podanych rozmiarach i wypisuje ja na ekran');
writeln('=====================================================================');
writeln;
writeln('Uwaga! Ilosc wierszy i kolumn nie moze byc > 100 ! ');
writeln;
write('Podaj ilosc wierszy : ');readln(n);
//write('Podaj ilosc kolumn : ');readln(n);
wczytaj_tablice(A);
wyswietl_tablice(A);
Transponuj(A,B,n);
writeln('Transponowana macierz to: ');
wyswietl_tablice(B);
iloczyn(i,j,A,B,C);
writeln('Macierz ortogonalna: ');
wyswietl_tablice(C);
//wyswietl_tablice(C);
readln;
END.
Mnożenie macierzy[Delphi]
-
- Użytkownik
- Posty: 735
- Rejestracja: 7 lis 2005, o 23:56
- Płeć: Mężczyzna
- Lokalizacja: Łódź
- Podziękował: 2 razy
- Pomógł: 133 razy
Mnożenie macierzy[Delphi]
No bo jest źle napisany. Iloczyn macierzy liczy się tworząc wyrażenia (zgodnie z Twoimi oznaczeniami) a[i,k]*a[k,j] po wszystkich możliwych k i dopiero po ich zsumowaniu dostajesz wartość c[i,j]
Reasumując: mnożysz przez siebie nie te elementy co trzeba i nigdzie nie tworzysz sumy (przypisujesz do wyjściowej macierzy po prostu wartość jednego z tych iloczynów)
Reasumując: mnożysz przez siebie nie te elementy co trzeba i nigdzie nie tworzysz sumy (przypisujesz do wyjściowej macierzy po prostu wartość jednego z tych iloczynów)