Matematické Fórum

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

#1 11. 03. 2010 21:58

Sonic44
Zelenáč
Příspěvky: 13
Reputace:   
 

Algoritmus

Zdravim,nejsem zrovna zdatný v programování, jsem na úplném začátku, takže asi se některým bude zdát tento příklad jako triviální, ale ja si s ním asi zlomím hlavu!:)prosím někoho, jestli by mi s ním nepomohl.Jedná se o vytvoření algoritmu v Delphi 7...



Program načte přirozené číslo N a dále N trojic celých čísel a pro každou zadanou trojici čísel zjistí, zda jsou shodná všechna tři, libovolná dvě nebo všechna tři různá, tj. pod každou zadanou trojici vypíše text: "shoda3", "shoda2" nebo "shoda0".

                                                                                                             mockrát děkuju předem!každá rada bude nad zlato!:)děkuju

Offline

  • (téma jako vyřešené označil(a) Sonic44)

#2 11. 03. 2010 22:14

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Algoritmus

No, nejprve je důležité si uvědomit, kolikrát cyklus povede. Aneb, kolik kombinací existuje. Na pořadí nezáleží. :-)

No, ale je jasné, že potřebuješ 3x to projet ze zadání... To znamená AB, AC, BC. Možná tu matematici nastíní něco unikátního, ale já bych to udělal tak no. Takže cyklus a projedeš to, co jsem napsal. Potom si uděláš pomocnou proměnnou, kam budeš ukládat, zda-li se AB, AC či BC rovná. No a nakonci si zjistíš:

- pokud počet kombinací se rovná té proměnné, všechny jsou stejné
- pokud proměnná je menší jak počet kombinací, jsou ty dvě stejné
- pokud proměnná je rovna nule, ani jedno číslo není stejné


samozřejmě se toto dá demonstrovat pro více inputů (čísel). Pro 4 čísla by byl počet kombinací 6 a tak dále.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#3 12. 03. 2010 08:38 — Editoval musixx (12. 03. 2010 09:17)

musixx
Místo: Brno
Příspěvky: 1771
Reputace:   45 
 

Re: Algoritmus

↑ RePRO: S tím zobecněním na čtyři čísla bych byl trochu opatrnější. Může se tam totiž například stát, že budou existovat dvě různé dvojice stejných čísel.

Pokud jde o trojice čísel, tak díky tranzitivitě rovnosti jde něco málo výpočetně ušetřit, ale není to nijak zvlášť podstatné. Nebude třeba žádná pomocná proměnná, která se na závěr bude muset testovat na rovnost 3, 1 a 0, jak to musíš dělat ty (BTW: nikdy nemůže být rovna 2). V nejhorším případě budu potřebovat tři porovnání (v jakémsi srozumitelném pseudokódu):

Code:

READ(N)

FOR I = 1 TO N DO

     READ(A, B, C)

     IF A=B THEN IF A=C THEN shoda3
                        ELSE shoda2
            ELSE IF A=C THEN shoda2
                        ELSE IF B=C THEN shoda2
                                    ELSE shoda0

EDIT: Ne, že by řešení od RePRO bylo špatné, ale rozhodně není na místě tvrdit, "co je důležité si uvědomit", neboť to nemusí být pravda a dotýká se to pak tohoto. Raději bych příspěvek uvedl: "Napadlo mě toto řešení:".

Offline

 

#4 12. 03. 2010 16:00

Spuntik
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Algoritmus

Co je to ta tranzitivita?

Offline

 

#5 12. 03. 2010 16:12 — Editoval musixx (12. 03. 2010 16:13)

musixx
Místo: Brno
Příspěvky: 1771
Reputace:   45 
 

Re: Algoritmus

↑ Spuntik: To je to, že když A=B a také A=C, tak už nemusím testovat, zda také B=C, protože to už musí být. Toho využívám při detekci shoda3.

Offline

 

#6 13. 03. 2010 13:07

Sonic44
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Algoritmus

↑ musixx:

nezlob se, třeba se mi vysměješ, ale s programováním jsem uplně na začátku.Mohl by ten algoritumus vypadat nějak takhle??

Code:

var
   a,b,c,N:integer

   begin
  readln(N);
  for i:=1 to N
       readln(a,b,c);
       íf a=b then if a=c then shoda 3
                          else shoda 2
              else if a=c then shoda 2
                          else if b=c then shoda 2
                                      else shoda 0;
  readln;
end.

Offline

 

#7 13. 03. 2010 17:36

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Algoritmus

Tranzitivitu jsem si vůbec neuvědomil. Je pravda, že jí tady využiješ pěkně. Jinak pro tři čísla nepotřebuješ žádnej cyklus. Tady něco máš, šlo mi  to i zkompilovat:

Code:

program stejneCisla;
uses CRT;

var a, b, c, shoda : integer;

  begin

  a := 2;
  b := 2;
  c := 4;

       if (a=b) then

           if (a=c)  then shoda := 3

                     else shoda := 2

       else if (a=c) then shoda := 2

       else if (b=c) then shoda := 2

       else               shoda := 0;


 write('Pocet stejnych: ', shoda);
 readkey;
 clrscr;

end.

Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#8 13. 03. 2010 19:51

Sonic44
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Algoritmus

↑ RePRO: tyyy jo mi to nejde zprovoznit!jako že to nedělá to co by to mělo!

Offline

 

#9 13. 03. 2010 20:05

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Algoritmus

↑ Sonic44: Co Ti na tom nevalí? Algoritmus je dobře, zkoušel jsem to.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#10 13. 03. 2010 20:10

Sonic44
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Algoritmus

↑ RePRO: ja zapnu Delphi dam New=>Other=>Console aplication a vlo69m algoritmus nefičí to!!

Offline

 

#11 13. 03. 2010 20:20

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Algoritmus

↑ Sonic44: Je rozdíl mezi algoritmem a napsaným kódem. To, co jsem Ti napsal je pouze logická demonstrace toho, co potřebuješ. Je to napsané správně. Je přece ale naprosto jasné, že pokud můj kód nakopíruješ někam do Delphi Editoru (já jsem to psal v Pascal Editoru), tak Ti to nepovalí...


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#12 14. 03. 2010 18:26

Sonic44
Zelenáč
Příspěvky: 13
Reputace:   
 

Re: Algoritmus

Aha aha, nezlob se, já jsem v tom úplně nováček a dneska si k tomu sednu a pokusím se to napsat tak aby mi to sežrala ta Delphina! ;);)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson