Prosím o pomoc MATICEděkuji – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prosím o pomoc MATICEděkuji – Pascal – Fórum – Programujte.comProsím o pomoc MATICEděkuji – Pascal – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
9. 5. 2015   #1
-
0
-

Dobrý den budu moc vděční za každou radu jsem uplny  neználek pascalu a ve škole jsem dosal zadaní: 

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)

vůbec si nevím rady předem děkuji za vše

Nahlásit jako SPAM
IP: 62.209.230.–
Sniper
~ Anonymní uživatel
215 příspěvků
9. 5. 2015   #2
-
0
-

Je květen, co jsi do teď v tý škole dělal? Podle všeho ses flákal, protože tohle je totálně triviální.

Vytvoř si tři dvourozměrné pole (to budou ty matice), prvky můžou být třeba typu integer. Následně první dva procházej pomocí cyklu(ů) for a každému prvku přiřaď náhodnou hodnotu pomocí funkce random (nezapomeň na začátku inicializovat RNG pomocí Randomize). Až je budeš mít naplněné, tak je znova projdi, a vždy porovnej odpovídající prvky v prvním a druhém poli, a menší ulož na stejné místo (stejné indexy) ve třetím poli. No a pak to třetí pole vypiš pomocí Write(Ln) (zase procházej pole pomocí for a postupně to vypisuj).
PS - některé kroky kroky se dají spojit.
Až budeš něco mít, a budeš mít nějaké problémy, tak sem zase napiš. Ale nečekej, že ti někdo bude dělat úkoly.

Nahlásit jako SPAM
IP: 90.179.201.–
9. 5. 2015   #3
-
0
-

neco malo jsem stořil ale dal si nevím rady
program matice;

var i,j,c:integer;
    m1,m2,m3: array [1..5] of array [1..5] of  integer;

begin
writeln('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 ');
writeln;
randomize;
for i:=1 to 5 do
 for j:=1 to 5 do
begin
c:= random(9);
m1[i,j]:=c
c:= random(9);
m2[i,j]:=c
m3[i.j]:=???

Nahlásit jako SPAM
IP: 62.209.230.–
Sniper
~ Anonymní uživatel
215 příspěvků
9. 5. 2015   #4
-
0
-

Dvourozměrné pole lze deklarovat i takto: 

Array[0..4,0..4] of Integer;


To co máš není špatně, ale mě se to nelíbí.   

Proměnná c je zbytečná, můžeš přiřazovat přímo do prvku: 

m1[i,j] := Random(10);


Ano, má tam být deset, protože funkce random vrací pseudonáhodnou hodnotu v rozsahu <0,param), všimni si že interval je shora/zprava otevřený.

Následovat bude to, že porovnáš odpovídající hodnoty v m1 a m2 a to menší uložíš do m3. 

If m1[i,j] < m2[i,j] then 
  m3[i,j] := m1[i,j]
else
  m3[i,j] := m2[i,j];


A pak už jenom napsat procedury na výpis týhle srandy.

Nahlásit jako SPAM
IP: 90.179.201.–
Sniper
~ Anonymní uživatel
215 příspěvků
9. 5. 2015   #5
-
0
-

Taky koukám že že tam nemá být rozsah 0..9 ale 1..9, takže volání random bude vypadat jinak: 

mX[i,j] := Random(9) + 1;
Nahlásit jako SPAM
IP: 90.179.201.–
10. 5. 2015   #6
-
0
-

vůbec netuším jak na to nejde mi vypsat ani jedna matice   prosím napsal bys mi kde dělám chybu děkuji

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
 m3[i,j]:= m2[i,j];
 end;
end;
procedure vypsanimat(i,j:integer);
  var i,j:integer;
  begin
    for i:=0 to 4 do
      begin
        for j:=0 to 4 do write(m1[i,j],'');
        writeln;
      end;
  end;
readln;
end.

Nahlásit jako SPAM
IP: 62.209.230.–
KIIV
~ Moderátor
+43
God of flame
10. 5. 2015   #7
-
0
-

Pokud chces matici vypsat, tak musis proceduru vypsanimat taky nekde zavolat. Bez toho je to tam jen takova "dekorace". A to zjisteni minima mas polovicate a pokud me zrak nesali taky opacne - cislo se vyplni do treti matice jen v pripade, ze je v prvni matici mensi nez v druhe; (a to se tam jeste vyplni cislo z te druhe matice, ne to mensi z prvni)

Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
10. 5. 2015   #8
-
0
-

Vubec nevim jak nato namohl bys te mi stým  pomoc  za finanční odměnu 

můj email 

vaclavzihadlo@seznam.cz  

Děkuji 

Nahlásit jako SPAM
IP: 62.209.230.–
KIIV
~ Moderátor
+43
God of flame
10. 5. 2015   #9
-
0
-

#8 justinblack
treba:

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;
Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Sniper
~ Anonymní uživatel
215 příspěvků
10. 5. 2015   #10
-
0
-

Což je absolutně totéž co jsem psal včera.

Nahlásit jako SPAM
IP: 90.179.201.–
KIIV
~ Moderátor
+43
God of flame
10. 5. 2015   #11
-
0
-

#10 Sniper
vidis, ani jsem to neprocital :D Holt, opakovani je matka moudrosti

Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mircosoft+1
Věrný člen
11. 5. 2015   #12
-
0
-

Jestli tohle není nějaký exotický dialekt pascalu, který neznám, tak proceduru (nebo obecně cokoli) je potřeba nejdřív definovat a pak teprve volat. Třeba takhle (na velikosti písmen samozřejmě nezáleží, píšu to tak jenom pro přehlednost):

program ...;

var ...;

procedure vypsanimat(...); {definice procedury}
var ...;
Begin
...
End;

BEGIN  {začátek hlavního programu}
...
vypsanimat(...);  {volání procedury}
...
vypsanimat(...);  {a třeba ještě jednou}
...
END.  {konec hlavního programu}

Jestli má procedura fungovat univerzálně a vypsat jakoukoli matici, kterou jí předhodíš, tak musí existovat možnost, jak jí tu matici předat. Třeba:

program ...;

type matice=array[1..5,1..5] of integer;

procedure vypsanimat(var ktere:matice);
var ...;
Begin
...
 write(ktere[...,...]); {pracujeme s maticí předanou přes parametr}
...
End;

var m1,m2,m3:matice;
    ...

BEGIN
...
vypsanimat(m1); {vypíše matici m1}
vypsanimat(m3); {vypíše matici m3}
...
END;

Všechno ostatní už tu bylo řečeno, stačí z toho spíchnout program :-).

Nahlásit jako SPAM
IP: 94.113.255.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
11. 5. 2015   #13
-
0
-

děkuji za vše a prosím o trpělivost se mnou 

něco jsem vypotil ale když spustim program tak mi to vypiše pouze 4 cifry vedle sebe a netuším co dělam špatně

program repete;
type matice= array [0..4,0..4] of integer;


procedure vypsanimat1( var m1:matice);
  var i,j:integer;
  begin
    for i:=0 to 4 do
      begin
        for j:=0 to 4 do
        write(m1[i,j]);
        writeln;
        readln(m1[i,j]);
      end;
  end;

procedure vypsanimat2( var m2:matice);
  var i,j:integer;
  begin
    for i:=0 to 4 do
      begin
        for j:=0 to 4 do
        write(m2[i,j]);
        writeln;
        readln(m2[i,j]);
      end;
  end;

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;
end;
vypsanimat1(m1);
vypsanimat2(m2);
 

readln;
end.

Nahlásit jako SPAM
IP: 62.209.230.–
KIIV
~ Moderátor
+43
God of flame
11. 5. 2015   #14
-
0
-

 Normalne to funguje... Jen cela pointa toho predavani matice jako parametr funkce byla v tom, aby to tam bylo jen jednou!

program repete;
type matice= array [0..4,0..4] of integer;
var
  m1, m2, m3 : matice;
  i, j       : integer;

procedure vypsanimat( var m:matice);
var i,j:integer;
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... ');
  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]:= 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.
Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
JoDiK
~ Anonymní uživatel
987 příspěvků
11. 5. 2015   #15
-
0
-

#13 justinblack
Ty tenhle program, cos sem zkopíroval opravdu spustíš? Tak to mě zajímá v čem ho překládáš, protože tohle má kromě logických i syntaktické chyby, takže nejde ani přeložit, natož spustit... Pokud ti to opravdu něco vypisuje, tak zkus smazat to nesmyslné čtení ve výpisu:

        write(m2[i,j]);
        writeln;
        readln(m2[i,j]);

A ještě jednou si prosím přečti příspěvek od Microsoftu, snad pochopíš že až budeš chtít vypsat všechny tři matice, opravdu nebudeš muset přidělávat třetí proceduru na výpis, naopak jednu smažeš...

Až to všechno opravíš, zjistíš. že už to máš skoro hotový, jen opravit logické chyby...

M1
   4   1   3   8   1
   8   9   7   8   2
   7   6   1   9   7
   6   1   1   3   2
   5   5   2   9   8

M2
   5   5   8   9   3
   4   6   9   9   6
   3   3   3   9   9
   2   2   7   6   1
   3   2   1   9   8

M3
   4   1   3   8   1
   4   6   7   8   2
   3   3   1   9   7
   2   1   1   3   1
   3   2   1   9   8

Než jsem to dopsal, už to tu je...

Nahlásit jako SPAM
IP: 88.103.228.–
11. 5. 2015   #16
-
0
-

Děkuji moc všem za trpělivost    program jede jak ma dík

Nahlásit jako SPAM
IP: 62.209.230.–
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, 2 hosté

Podobná vlákna

Prosím o pomoc — založil mergle

Prosim o pomoc — založil bbeni

C / C++ → Prosim pomoc — založil Nory

Prosím o pomoc!! — založil Michal

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ý