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 22. 12. 2011 23:27

jouda
Zelenáč
Příspěvky: 1
Reputace:   
 

počítadlo

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

 

#2 24. 12. 2011 10:46 — Editoval TomDlask (24. 12. 2011 10:47)

Dioxid
Příspěvky: 416
Reputace:   13 
 

Re: počítadlo

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


Jsem omylný, proto ne vše, co jsem napsal, je zaručeně správně.
468

Offline

 

#3 25. 12. 2011 11:44 Příspěvek uživatele RePRO byl skryt uživatelem RePRO. Důvod: Nestihl jsem z časových důvodů vykonat.

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson