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
Čavte,
Mám nejaké takéto počítadlo, kde je 1,2,3 až n okienok v ktorých sa postupne menia čísla v rozsahu 1-5.
Výpis by mal obsahovať všetky kombinácie.
teda:
pre n = 3
1 1 1
1 1 2
1 1 3
1 1 4
1 1 5
1 2 1
. . .
. . .
5 5 5
Ak by sme dopredu poznali n, nebol by to problém, ale čo ak n dopredu nepoznáme a hodnotu dostane až za behu programu...
Offline
Sice neznám C++, co třeba vytvářet aritmetickou posloupnost (s rozdílem 1) v desítkové soustavě, která má 5^n prvků?
0, 1, 2, 3, 4, 5, 6, ..., (5^n)-1, 5^n
A tu poté převádět do pětkové soustavy (reprezentované znaky 1,2,3,4,5) a vypisovat?
Druhou možností by bylo procházet všechna přirozená čísla od 10^(n-1) do 10^n. U nich bys kontroloval jestli se skládají jen z číslic 1,2,3,4,5 a případně vypsal.
Obě možnosti nejsou moc efektivní, v C ani C++ nedělám a tudíž to tam asi půjde udělat elegantněji.
Offline
↑ hradecek:
Čau, v pascalu by to mohlo vypadat nějak takhle:
var n: integer; a: array of integer; procedure Pocitadlo(hloubka: integer); var i:integer; begin if hloubka>n then begin for i:=1 to n do write(a[i], ' '); writeln end else begin for i:=1 to 5 do begin a[hloubka]:=i; Pocitadlo(hloubka+1) end end end; begin read(n); setlength(a,n+1); Pocitadlo(1); end.
Snad to pochopíš, přijde mi to lepší než nějaký pseudokód. Trik je v tom, že se ta čísla zapisují do nějakého globálního dynamického pole a procedura je vypíše až v příslušné hloubce rekurze.
Offline
↑ FailED:
Hmmm a čo je Tiskni(1)...
Offline
↑ FailED:
Pekné, veľmi ti ďakujem ďakujem.
Offline