Už jsem na to přišla, tak to prosím smažte :-)
Příspěvky odeslané z IP adresy 85.207.248.–
Redwizara
Redwizara
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ěď :-)