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 04. 03. 2012 13:36

SaintGeorge
Zelenáč
Příspěvky: 2
Reputace:   
 

Algoritmus pyt.trojúhelníky

Dobrý den. Ve škole jsem za úkol dostal příklad a jelikož algoritmy nejsou moje silná stránka, tak bych od Vás potřeboval poradit..nebo aspoň lehce navést. Myslím, že jen potřebuju pochopit příklad a co tam mám udělat.
Zadání:
Nalezněte všechny Pythagorejské trojúhelníky, které mají všechny strany kratší, než zadané M.Pythagorejským trojúhelníkem rozumíme pravoúhlý trojúhelník s celočíselnými délkami všech stran.

Nevím moc co s tím mám dělat..je podstatné, že to jsou pythagorejské trojúhelníky?
Jestli jsem to správně pochopil, tak nadefinuju M a strany trojúhelníku. V IF napíšu, že ten trojúhelník musí být menší než M.. a pak v REPEAT, že se to musí opakovat do té doby, než se to dorovná tomu M ne?

Děkuji :)

Offline

 

#2 04. 03. 2012 15:29 — Editoval RePRO (04. 03. 2012 15:46)

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

Re: Algoritmus pyt.trojúhelníky

Zdravím,
taky jsem nevěděl, na co se zaměřit přesně. Píšeš to ale dobře, taky si to myslím.

1) Příkaz While poběží do té doby, dokud bude platit podmínka: (A < M) && (B < M) && (C < M).
2) A pokud platí tato podmínka, tak zkontrolujeme ještě, jestli jde o Pythágora, to jest: C^2 = A^2 + B^2. Dáme tam counter (počítadlo), že jsme našli právě takto specifikovaný trojúhelník.

Poté si to upravíme do svého programovacího jazyka, tohle je C#:

Code:

            Boolean vysledek;
            int pocitadlo = 0;
            do
            {
                vysledek = false;
                // načteme M
                Console.Write("M: ");
                int M = Convert.ToInt32(Console.ReadLine());
                // načteme odvěsnu A
                Console.Write("A: ");
                int A = Convert.ToInt32(Console.ReadLine());
                // načteme odvěsnu B
                Console.Write("B: ");
                int B = Convert.ToInt32(Console.ReadLine());
                // načteme přeponu C
                Console.Write("C: ");
                int C = Convert.ToInt32(Console.ReadLine());

                if ((A < M) && (B < M) && (C < M))
                {
                    vysledek = true;
                    if (Math.Pow(C, 2) == (Math.Pow(A, 2) + Math.Pow(B, 2))) pocitadlo++;
                }
            }
            while (vysledek);

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

Offline

 

#3 04. 03. 2012 20:48 — Editoval Honzc (04. 03. 2012 20:52)

Honzc
Příspěvky: 4647
Reputace:   248 
 

Re: Algoritmus pyt.trojúhelníky

↑ SaintGeorge:
V Pascalu takto:
Nejdřív trochu teorie o Pythagorejských trojúhelnících.
1. Neexistuje P.t. se stejnými odvěsnami.
2. Neexistuje P.t. s kratší odvěsnou menší než 3.
Princip hledání:
3 vnořené cykly pro a,b,c (a bude kratší odvěsna, b delší, c přepona)
Dle bodu 2 jde cyklus pro a od 3 a podle bodu 1 do daného čísla M zmenšeného o 2.
Obdobně podle 1 jde cyklus pro b od čísla a, zvětšeného o 1 do čísla M-1.
Cyklus c jde pak od b+1 do M
Jestliže je splněna podmínka pro P.t., tj. a^2+b^2=c^2,  tak jsou na obrazovku vypsána tato 3 čísla.

var M,a,b,c: Integer;

begin
  Write(' Zadej do jakeho cisla: ');
  ReadLn(M);
  WriteLn('Pythagorejske trojuhelniky do cisla ',M, ' jsou:');
  for a := 3 to M-2 do
    for b := a+1 to M-1 do
      for c := b+1 to M do
         if a*a+b*b=c*c then
          WriteLn(a,',',b,',',c);
  ReadLn;
end.

Po editaci.
Pokud P.t. nemůže mít přeponu rovnou číslu M, pak v cyklu budou čísla do kterých jdou:
a -> M-3, b -> M-2, c -> M-1

Offline

 

#4 21. 03. 2012 11:53

SaintGeorge
Zelenáč
Příspěvky: 2
Reputace:   
 

Re: Algoritmus pyt.trojúhelníky

¨Promiňte za opožděnou odpověď..¨
Děkuji Vám za to, protože sám bych na to nejspíš nepřišel, možná postupem času s pomocnou rukou :)
Vyzkouším to, až budu v počítačích ve škole.
Ještě jednou děkuji za ochotu :)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson