Násobení matic – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Násobení matic – Pascal – Fórum – Programujte.comNásobení matic – Pascal – Fórum – Programujte.com

 

Redwizara
~ Anonymní uživatel
2 příspěvky
28. 3. 2009   #1
-
0
-

Zdravím, napsala jsem si prográmek pro násobení matic a někde tam mám asi logickou chybu. Přemýšlím nad tím už hodinu a stále na to nemůžu přijít. Problém je, že když násobím nečtvercové matice, algoritmus vypíše všechny prvky posledního sloupce výsledné matice jako nulové. Neví prosím někdo, co s tím? Tady je kód:

program nas_matic;


uses
crt;

const
a=1;
c=2;
b=3;

var
matice_1: array[1..a, 1..c] of integer;
matice_2: array[1..c, 1..b] of integer;
vysledna_matice: array[1..a, 1..b] of integer;
m,n,i,j,k: integer; {promenne pro pruchody cyklem: m,n pro nacteni a vypsani; matic, i,j,k pro nasobeni matic}

begin

writeln;
writeln('===================== NASOBENI MATIC ======================');

writeln;
writeln('pozn. c.1: velikost matice A a matice B je nutno definovat v konstantach pred kompilaci programu');
writeln('pozn. c.2: nasobeni matic NENI komutativni! (A*B != B*A)');
writeln;
writeln('===========================================================');
writeln;
writeln('Zadejte hodnoty matice A:');
writeln;

for m:=1 to a do begin {nacteni prvni matice}
for n:=1 to c do begin
write('a',m,',',n,' = ');
readln(matice_1[m,n]);
end;
writeln;
end;

m:=0;
n:=0;

writeln('===========================================================');
writeln;
writeln('Zadejte hodnoty matice B:');
writeln;

m:=0;
n:=0;

for m:=1 to c do begin {nacteni druhe matice}
for n:=1 to b do begin
write('b',m,',',n,' = ');
readln(matice_2[m,n]);
end;
writeln;
end;

i:=0;
j:=0;
k:=0;

for i:=1 to a do begin {vynasobeni matic}
for j:=1 to c do begin
vysledna_matice[i,j]:=0;
for k:=1 to b do begin
vysledna_matice[i,j]:=vysledna_matice[i,j]+matice_1[i,k]*matice_2[k,j];
end;
end;
end;

m:=0;
n:=0;

writeln('===========================================================');
writeln;
writeln('Hodnoty vysledne matice C po vynasobeni A*B jsou:');
writeln;

for m:=1 to a do begin {vypsani vysledne matice}
for n:=1 to b do begin
writeln('c',m,',',n,' = ',vysledna_matice[m,n]);
end;
writeln;
end;

writeln('=================== PROGRAM BYL UKONCEN ===================');
writeln;

end.


Předem děkuji za odpověď :-)

Nahlásit jako SPAM
IP: 85.207.248.–
Redwizara
~ Anonymní uživatel
2 příspěvky
28. 3. 2009   #2
-
0
-

Už jsem na to přišla, tak to prosím smažte :-)

Nahlásit jako SPAM
IP: 85.207.248.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 20 hostů

Podobná vlákna

Nasobeni matic — založil dreIx

Násobení dvou matic — založil Zke

Dynamicke nasobeni matic — založil cecilconrad

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý