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 18. 10. 2011 12:53

sisulka93
Zelenáč
Příspěvky: 14
Reputace:   
 

Program na převod Římskych čísel do binární soustavy

Ahojte potřebovala bych pomoc s programem na převod Římskych čísel do binární soustavy , díky :)

Offline

  • (téma jako vyřešené označil(a) frank_horrigan)

#2 18. 10. 2011 13:18 — Editoval frank_horrigan (18. 10. 2011 13:24)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Program na převod Římskych čísel do binární soustavy

Ahoj,

testuj řetězec znak po znaku, ze písmena I, V, X, L, C, D a M nahrazuj čísly v proměnné, čiň tak zleva doprava (cyklus for s počtem průchodů o délce řetězce (počítej s tím, že řetězec je null terminated), takže budeš mít:

Code:

char romans[10] = "MMMDCCLIX" // to vychází přesně na 10, nezapomeň mít dostatečně velké pole, do kterého uložíš řetězec římských znaků
short decimals;
for(int i = 0; i < strlen(romans); i++)

a budeš jednotivá čísla sčítat:

Code:

{
if( romans[i] == 'M') decimals += 1000;
if(romas[i] == 'D') decimals += 500;
........
}

Pak ještě potřebuješ test, zda předchozí znak nebyl menší než ten, co právě čteš, pokud tomu tak bylo, tak starý znak, který už máš v proměnné decimals odečteš (jako by nebyl), vypočítáš (IFama) hodnotu toho dvojznaku (např VD), těch kombinací není moc, nikdy nebudeš mít DM, LC, VX, a tuto pak k proměnné decimals zase přidáš. Kód je asi jasný.

Můžeš, místo soustavy ifů použít konstrukci switch-case, kde case bude mít ASCII hodnotu daného znaku.

Tím to máš v dekadické soustavě, a z dekadický už snadno uděláš binární (obvykle je na to knihovní funkce, jen nevím, jak se jmenuje, pokdu není, už se dá snadno dopsat podle" klasických pravidel převodu mezi soustavama

EDIT: tady je kód, jak se z decimálu uděláš binár: (já ho nevymýšlel, jen našel již hotovej)

Code:

short i;
   char b[12];

   short num = decimals;

    for( i = 11; i >= 0; i--)        
   {
        if( (1 << i) & num)
           b[11 - i] = '1';
        else
           b[11 - i] = '0';                   
   }

The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#3 18. 10. 2011 13:22

sisulka93
Zelenáč
Příspěvky: 14
Reputace:   
 

Re: Program na převod Římskych čísel do binární soustavy

dekuji :)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson