pomoc s algoritmom - kontrola

Programovacie jazyky, rady, poradňa...
matuska
Novice
Novice
Príspevky: 5
Registrovaný: 17 dec 2009, 21:55

pomoc s algoritmom - kontrola

Príspevok od používateľa matuska »

Ahojte. Potrebovala by som skontrolovat algoritmus do školy. Zadanie znie: Navrhnite algoritmus na prevod dvojkového čísla do šestnástkovej sústavy.

Dopredu ďakujem
Prílohy
algo.jpg
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

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ť
matuska
Novice
Novice
Príspevky: 5
Registrovaný: 17 dec 2009, 21:55

Príspevok od používateľa matuska »

Vies mi to vysvetliť trošku presnejšie prosím ťa.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

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é)
matuska
Novice
Novice
Príspevky: 5
Registrovaný: 17 dec 2009, 21:55

Príspevok od používateľa matuska »

Som rad že mi pomaháš a snažíš sa mi vysvetliť problematiku ale ja som teraz z toho už tak poletená že už teraz neviem čo mám robiť....chapem čo sa mi snažiš vysvetliť a naznačiť ale neviem ako to mám spraviť v vyvojovom diagrame :(
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

takto nejak, na označené miesto príde ešte podmienka že ak cislo = 15 potom vystup = vystup + "F", ak cislo = 14 potom vystup = vystup + E ..... ak cislo = 10 potom vystup = vystup + A inak vystup = vystup + cislo
Prílohy
algo.jpg
matuska
Novice
Novice
Príspevky: 5
Registrovaný: 17 dec 2009, 21:55

Príspevok od používateľa matuska »

Takto si to myslel. A to čo tam mám meniť to neviem akosi sraviť :(
Prílohy
algo3.jpg
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

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)
matuska
Novice
Novice
Príspevky: 5
Registrovaný: 17 dec 2009, 21:55

Príspevok od používateľa matuska »

Ahojte. Dnes som bola u profáka ohľadom môjho zadania. A Povedal mi že je to podstate dobre ale mam to v jazyku C a ja to mam spraviť vraj nejak univerzalne. Čiže nepouživať príkazy C. A teraz sa s tým neviem pohnúť. čo mám s tým robiť?
Prílohy
algo3.png
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

no tak to netuším, vždy sa robí vývojak v syntaxi pascalu alebo céčka, to je maximálne univerzálne. Skús sa ho spýtať že či to máš ako napísať v reči človeka pre debilov :) V praxi sa ale nič také nerobieva
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

A nebude to len tou funkciou length()? Mozno chcel, aby to bolo spravene bez tej funkcie(navrhnut sa to tak da, len je to o nieco zlozitejsie)....aj ked v takom pripade to predsa len mohol povedat trochu zrozumitelnejsie.
Napísať odpoveď