Súčin dvoch matíc – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Súčin dvoch matíc – Pascal – Fórum – Programujte.comSúčin dvoch matíc – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
majus85
~ Anonymní uživatel
1 příspěvek
8. 10. 2014   #1
-
0
-

Prosím o pomoc....napísala som program pre vynásobenie dvoch matíc, ktorý sa spustí ale po prvej procedúre sa vypne a nepokračuje. Rozmýšľam nad tým už 2 dni a neviem nájsť chybu. Veľmi pekne ďakujem za odpovede.

program Nasobenie;
uses crt;
const q=10;
type pole=array [1..q,1..q] of integer;
var a,b,c: pole;
i,j,p,k,l,m,n: integer;

procedure MENU(k,l,m,n: integer);
begin
writeln('==========Nasobenie matic==========');
writeln('Pocet stlpcov prvej matice sa musi rovnat poctu riadkov druhej matice!');
writeln;
write('    1. matica - pocet riadkov: ');
readln(k);
write('    1. matica - pocet stlpcov: ');
readln(l);
writeln;
write('    2. matica - pocet riadkov: ');
readln(m);
if m<>l then writeln('Neda sa vypocitat!')
else begin
write('    2. matica - pocet stlpcov: ');
readln(n);
end;
writeln;
end;

procedure VYPIS(i,j,p,k,l,n: integer; a,b: pole);
begin
for i:= 1 to k do
 for j:= 1 to l do
 begin
 write('1. matica - prvok ',i,',',j,': ');
 readln(a[i,j]);
 end;
writeln;
for j:= 1 to l do
 for p:= 1 to n do
 begin
 write('2. matica - prvok ',j,',',p,': ');
 readln(b[j,p]);
 end;
end;

procedure SUCIN(i,j,p,k,l,n: integer; a,b,c: pole);
begin
for i:=1 to k do
 for j:=1 to l do
 begin
 c[i,j]:=0;
 for p:=1 to n do
 c[i,j]:=c[i,j]+a[i,p]*b[p,j];
 end;
for i:=1 to k do
begin
 for p:=1 to n do
 begin
 write(c[i,p]);
 end;
writeln;
end;
end;

begin
clrscr;
MENU(k,l,m,n);
VYPIS(k,l,m,i,j,p,a,b);
SUCIN(k,l,m,i,j,p,a,b,c);
readln;
end.

Nahlásit jako SPAM
IP: 193.87.171.–
Reklama
Reklama
Sniper
~ Anonymní uživatel
184 příspěvků
8. 10. 2014   #2
-
0
-

Ty procedury se provedou, ale nic neudělají, protože máš totální bordel v proměnných. V proceduře MENU zadáváš proměnné k,l,... ale jakmile proceduru opustíš, jejich hodnota je ztracená. Pokud máš totiž dvě proměnné stejného jména, tak se přednostně pracuje s tou, která je "lokálnější", v tomto případě se tedy pracuje s parametry procedury MENU, nikoliv s globálními proměnnými. Problém je že dál v programu předáváš dalším funkcím globální proměnné, které jsou neinicializované (s největší pravděpodobností rovné nule) a cykly uvnitř funkcí VYPIS a SUCIN tudíž neproběhnou ani jednou.

Nahlásit jako SPAM
IP: 90.179.201.–
JoDiK
~ Anonymní uživatel
981 příspěvků
8. 10. 2014   #3
-
0
-

#1 majus85
A já bych ještě doplnil chaos v názvech, procedura menu načítá rozměry matic, procedura vypis načítá hodnoty v maticích a procedura součin kromě násobení taky vypisuje.

Zkus prosím nazývat procedury pravými jmény - podle toho co skutečně dělají...

A pro začátek v první proceduře změň paramatery na vstupně/výstupní a možná to i něco začne dělat...

procedure MENU(var k,l,m,n: integer);

Nahlásit jako SPAM
IP: 88.103.236.–
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, 42 hostů

Podobná vlákna

Násobenie dvoch matíc — založil Kent

Sucin — založil AKe

Sucin v MATLABE — založil pietro62

Server na dvoch linkach — založil Prog.

Moderátoři diskuze

 

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