Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit

Dobrýn den dostal sem za úkol vytvořit v pascalu :
dvě matice 5x5 naplnit náhodnými čísly od 1-9,určete menší hodnotu z navzájem si odpovídající prvků z těchto matic a uložte ji do třetí matice,všechny matice zobrazit (pomocí podprogramu)
programováni mi vůbec nejde tak prosím o pomoc
neco malo jsem stvořil ale nic mi stejnak nejde
program matka;
var i,j:integer;
m1,m2,m3: array [0..4] of array [0..4] of integer;
begin
writeln('matice 5x5 naplnit náhodnými čísly od 1-9... ');
writeln;
randomize;
for i:=0 to 4 do
for j:=0 to 4 do
begin
m1[i,j]:= random(9)+1;
m2[i,j]:= random(9)+1;
If m1[i,j] < m2[i,j] then begin
m3[i,j]:= m2[i,j];
end else begin
m3[i,j]:= m2[i,j];
end;
procedure vypsanimat(i,j:integer; var m1:tmatice);
var i,j:integer;
begin
for i:=0 to 4 do
begin
for j:=0 to 4 do write(m1[i,j],'');
write(m1[i,j]:2'');
writeln;
readln(m1[i,j]);
end;
end;
vypsanimat;
readln;
end.
Offline
ahoj ↑ justinblack:,
proberme Tvůj návrh:
var m1,m2,m3: array [0..4] of array [0..4] of integer;
Toto kompilátor asi vezme, ale určitě lepší je deklarace ↑ jarrro:.
Proceduru nesmíš psát do těla jiné procedury, takže správná struktura je
program matka;
var i,j:integer;
m1,m2,m3: array [0..4] of array [0..4] of integer;
procedure vypsanimat(i,j:integer; var m1:tmatice);
var i,j:integer;
begin
{sem vypsat celou proceduru vypsanimat}
end;
{a až sem tělo procedury nebo programu}
begin
writeln('matice 5x5 naplnit náhodnými čísly od 1-9... ');
writeln;
......
vypsanimat;
readln;
end.
Máš-li matici deklarovanou jako matici celých čísel, pak na
m1[i,j]:= random(9)+1;
m2[i,j]:= random(9)+1;
zařve kompilátor, protože napravo jsou čísla typu real. Musí být
m1[i,j]:= trunc(random(9)+1);
m2[i,j]:= trunc(random(9)+1);
Procedura vypsanimat má zřejmě matici jen vypsat, nikoliv načítat, takže řádek
readln(m1[i,j]);
z ní vypusť. Vypusť rovněž
write(m1[i,j]:2'');
No a protože máš asi vypsat matici s nejmenšími čísly, tj. m3, musíš proceduru vypsanimat zavolat s touto proměnnou, tedy vypsanimat(m3) - předposlední řádek.
Offline
ahoj ↑ justinblack:,
zkusím formou poznámek:
program repete;
type matice= array [0..4,0..4] of integer;
{ deklarace typu, typ bývá zvykem začínat T, tedy TMatice, ať je jasné, že jde o datový typ}
var
m1, m2, m3 : matice;
i, j : integer;
{deklarace proměnných}
procedure vypsanimat( var m:matice);
{ve dvou vnořených cyklech vypisuje matici}
var i,j:integer;
{programové závorky begin, end psát kvůli přehledu zásadně na samostatné řádky a odsazovat}
begin
for i:=0 to 4 do
begin
for j:=0 to 4 do write(m[i,j],' ');
writeln;
end;
end;
begin
writeln('matice 5x5 naplnit náhodnými čísly od 1-9... ');
{vypíše info}
writeln;
{odřádkuje}
randomize;
{"zamíchá" náhodná čísla}
for i:=0 to 4 do
for j:=0 to 4 do
{postup po prvcích matice znovu ve dvou vnořených cyklech}
{a znovu strašný chaos v begin - end, je potřeba trochu štábní kultury}
begin
m1[i,j]:= random(9)+1;
m2[i,j]:= random(9)+1;
{tady se trochu divím, že to funguje - chybí tady zkrácení na celé číslo - trunc}
{dál už je to snad jasné...}
If m1[i,j] < m2[i,j]
then begin
m3[i,j]:= m1[i,j];
end
else begin
m3[i,j]:= m2[i,j];
end;
end;
writeln('Matice1: ');
vypsanimat(m1);
writeln('Matice2: ');
vypsanimat(m2);
writeln('Matice3: ');
vypsanimat(m3);
end.
Offline