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
Zdravím. Neví někdo jak na tenhle problém? Potřebuju v javě udělat počítadlo z pole o velikosti "n", do kterého se při každém cyklu přičte 1, ale maximální hodnota buňky je právě 1. V podstatě je to počítání ve dvojkové soustavě. Problém ale je, že nevím délku pole, ta bude variabilní.
Jsem úplný začátečník, takže prosím pomalu :)
Offline
Zdravím, Javu sice neumím ale algoritmus ti poradit mohu. Pro pohodlnost to ale bude lepší s polem o velikosti n, jehož maximální hodnota buňky je 2. (Nevím jestli je v zadání úlohy napsáno že se musí používat jedině pole s maximální hodnotou 1, jestli ano tak se to ale dá lehce předělat)
Máme tedy v poli nějakou hodnotu (např. 101) a tu chceme zvětšit o 1. Přičteme tedy k poslednímu číslu jedničku a získáme 102. Protože máme v dané buňce dvojku tak to je znamení, že se musíme posunout to vedlejší buňky a pokračovat v úpravě. Do vedlejší buňky tedy přičteme jedničku a tu dvojku nahradíme nulou - takže bude pole obsahovat 110. Již tam žádnou dvojku nemáme a tak jsme hotovi.
Možná se bude hodit ještě jeden příklad, ale již jen krátce:
máme hodnotu 101011111
na konec přičteme jedničku - máme 101011112
dostali jsme dvojku, nahradíme ji nulou a do buňky vedle přičteme jedničku - máme 101011120
dostali jsme dvojku, nahradíme ji nulou a do buňky vedle přičteme jedničku - máme 101011200
dostali jsme dvojku, nahradíme ji nulou a do buňky vedle přičteme jedničku - máme 101012000
dostali jsme dvojku, nahradíme ji nulou a do buňky vedle přičteme jedničku - máme 101020000
dostali jsme dvojku, nahradíme ji nulou a do buňky vedle přičteme jedničku - máme 101100000
už tam žádná dvojka není, algoritmus je u konce (101100000)
Kdyby to nebylo jasné tak to mohu naprogramovat v Pascalu nebo pseudokódu.
pozn. Tento algoritmus je prakticky jen aplikování písemného sčítání ve dvojkové soustavě, tzn.:
0+1=1
0+0=0
1+1=10 (ale v desítkové nám vyjde 2) => napíše se nula, "pamatujeme" si přičíst jedničku do dalšího řádu
Offline