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ý 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
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#:
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);Offline
↑ 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

¨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