pomoc s algoritmom - kontrola
pomoc s algoritmom - kontrola
Ahojte. Potrebovala by som skontrolovat algoritmus do školy. Zadanie znie: Navrhnite algoritmus na prevod dvojkového čísla do šestnástkovej sústavy.
Dopredu ďakujem
Dopredu ďakujem
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
je to dobre, až na detail že niekde s premennou cislo narábaš ako s číslom, a niekde s ňou musíš narábať ako s textom. Ide o to, že jednotlivé štvorice bitov ktoré prevedieš na jednu cifru šestnástkovej sústavy nezrátavaš, iba reťazíš. Buď si zavedieš novú premennú ktorá bude string a na tú dlhú šípku čo ide na začiatok podmienky z príkazu pozicia=pozicia+4 dáš vysledok = vysledok+cislo a vypisovať budeš výsledok, alebo tento fakt spomenieš v nejakej dodatočnej dokumentácii. Snáď si pochopila čo sa snažím povedať. Ak si to ale robila sama, tak určite vieš ako ten prevod funguje a mala by si rozumieť
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
rozložíš to binárne číslo po 4 bitoch, čiže napríklad 1101|1110|1001|0010. Teraz každú cifru v každej štvorici násobiš príslušnou mocninou dvojky a všetko to dávaš do premennej cislo. To je v poriadku, tu s tou premennou pracuješ ako s číslom. Po prvej štvorici tam máš prvú cifru z výsledného šestnástkového čísla. Ideš na ďalšiu štvoricu až postupne prejdeš celé číslo. ALE nemôžeš jednotlivé cifry zrátavať, ale mala by si ich zapisovať v takom poradí ako to máš podelené, a tu teda s tým už musíš pracovať ako s reťazcom, lebo keď dáš cislo = cislo + nieco tak nezapíše túto cifru na začiatok ale zráta to. Je rozdiel či mám premennú typy číslo A v ktorej mám 2 a spravím A = A + 5 čoho výsledok je 7, a keď mám premennú typu string A v ktorej mám '2' a spravím A = A + '5' čoho výsledok je 25 (a práve toto ty potrebuješ). Ty si sa to snažila vyriešiť tým príkazom cislo =cislo * 16 čo je v poriadku, ale dostaneš výsledné šestnástkové číslo v desiatkovej sústave. Napríklad pre 11110000 dostaneš 240 a ak to spravíš tak ako píšem tak dostaneš 150 (pričom 15 je prvá cifra ktorá vznikla z prvých štyrok jednotiek, a nula je druhá ktorá vznikla z druhých štyroch núl. A stačí 15 zameniť za F, takže výsledok je F0. Ty budeš musieť robiť druhý prevod, toho desiatkového 240 na šestnástkové)
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
nie, vlavo v kosodlžniku bude iba vystup, to je značka na vstupy/vystupy a nemôžeš tam priraďovať hodnoty (na priraďovanie slúži obdlžnik). Pozri sa na ten obrázok ešte raz. To generovanie výstupu bude na tej bodke vpravo, ale treba tam dať podmienku, aby do vystupu nepriradilo napríklad 15 (lebo 15 nie je platná cifra, v šestnástkovej sústave je to F). Takže tam bude 5 podmienok (case, switch, vetvenie.. neviem ako tomu v škole nadávate) kde sa bude overovať:
ak je číslo = 15 tak vystup bude vystup + F
ak je cislo = 14 tak vystup bude vystup + E
... a tak dalej ...
ak je cislo = 10 tak vystup bude vystup + A
v ostatných prípadoch vystup bude vystup + cislo. Toto sa ale už opakujem, takže to musíš zvládnuť. Ak nie, čítaj dokola čo som písal až kým nepochopíš, ja idem teraz spať
Ráno tu chcem vidieť hotové riešenie aby som mohol napísať "ok" 
//edit: tých 5 podmienok buď zreťazíš zaseba, alebo to spravíš ako rozhodovaí blok. To sa zapisuje takto: http://www.ikvalita.cz/download/kap2.pdf (strana 6)
ak je číslo = 15 tak vystup bude vystup + F
ak je cislo = 14 tak vystup bude vystup + E
... a tak dalej ...
ak je cislo = 10 tak vystup bude vystup + A
v ostatných prípadoch vystup bude vystup + cislo. Toto sa ale už opakujem, takže to musíš zvládnuť. Ak nie, čítaj dokola čo som písal až kým nepochopíš, ja idem teraz spať
//edit: tých 5 podmienok buď zreťazíš zaseba, alebo to spravíš ako rozhodovaí blok. To sa zapisuje takto: http://www.ikvalita.cz/download/kap2.pdf (strana 6)
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa: