Goedendag geachte forumleden
,
Ik ben een beginneling in C++, en ik probeer voor de grap een getallen converter te schrijven,
die werkt met Dec, Hex, Bin, Oct en Gray.
Hij rekent eerst van iets naar Decimaal, en daarna van Decimaal naar gewenst.
Nou heb ik dus een probleem, want nu wil ik (natuurlijk) ook Hexadecimaal erbij in gooien.
Het probleem is dus: Hoe doe ik dat, aangezien dat met letters werkt, is het nogal lastig om ermee te rekenen.
Ik zal even een stukje script hier neer kwakken, kunnen jullie een beetje bekijken wat ik gedaan heb.
Dit is het stukje van iets naar Decimaal, daaronder komt dan ook nog eens een gelijkwaardig script voor Decimaal naar gewenst.
Verder komt erboven nog, de invoer van wat naar wat, (bv Decimaal naar Binair) en de invoer van het getal.
Dit is dus het script, voor het omzetten.
Verder had ik zelf al wel wat bedacht, maar dat is misschien een beetje omslachtig.
Dat is door de Hexadecimale invoer
bijvoorbeeld: 23A
in een array te plaatsen
invoer[1] = 2, invoer[2] = 3, invoer[3] = A (of 10)
En dan per variabele uit te rekenen wat de waarde is in het Decimaal:
invoer[1] = 2*256, invoer[2] = 3*16, invoer[3] = A*1 (of 10*1)
en dit bij elkaar op te tellen:
2*256+3*16+10*1 = 570
Maar ik neem aan dat het veel sneller kan!
Hebben jullie misschien een idee?
Groeten,
Dikharz
Edit: Codetags toegevoegd
Ik ben een beginneling in C++, en ik probeer voor de grap een getallen converter te schrijven,
die werkt met Dec, Hex, Bin, Oct en Gray.
Hij rekent eerst van iets naar Decimaal, en daarna van Decimaal naar gewenst.
Nou heb ik dus een probleem, want nu wil ik (natuurlijk) ook Hexadecimaal erbij in gooien.
Het probleem is dus: Hoe doe ik dat, aangezien dat met letters werkt, is het nogal lastig om ermee te rekenen.
Ik zal even een stukje script hier neer kwakken, kunnen jullie een beetje bekijken wat ik gedaan heb.
Dit is het stukje van iets naar Decimaal, daaronder komt dan ook nog eens een gelijkwaardig script voor Decimaal naar gewenst.
Verder komt erboven nog, de invoer van wat naar wat, (bv Decimaal naar Binair) en de invoer van het getal.
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| //invoer1 is de ingevoerde waarde //tallig is hoeveel tallig het stelsel is (Decimaal = 10, Binair = 2, Hexadecimaal = 16, enz) //Variabelen klaarmaken invoer2 = invoer1; uitkomst = 0; waarde = 1; meestlinks1 = 1; //Kijken hoeveel cijfers er achter het meest linkse cijfer staat, en welke waarde het meest linkse cijfer heeft //Met "waarde" bedoel ik trouwens: bij 10110 (binair) is de waarde van het 3e getal 4 while (invoer1 > 1) { waarde = waarde*tallig; invoer1 = invoer1/10; meestlinks1 = meestlinks1*10; } //Per cijfer uitrekenen welke waarde deze heeft, en deze bij elkaar optellen voor de uitkomst while (waarde > 0) { meestlinks2 = invoer2/meestlinks1; uitkomst = uitkomst+(meestlinks2*waarde); waarde = waarde/tallig; meestlinks2 = meestlinks2*meestlinks1; invoer2 = invoer2-meestlinks2; meestlinks1 = meestlinks1/10; } |
Dit is dus het script, voor het omzetten.
Verder had ik zelf al wel wat bedacht, maar dat is misschien een beetje omslachtig.
Dat is door de Hexadecimale invoer
bijvoorbeeld: 23A
in een array te plaatsen
invoer[1] = 2, invoer[2] = 3, invoer[3] = A (of 10)
En dan per variabele uit te rekenen wat de waarde is in het Decimaal:
invoer[1] = 2*256, invoer[2] = 3*16, invoer[3] = A*1 (of 10*1)
en dit bij elkaar op te tellen:
2*256+3*16+10*1 = 570
Maar ik neem aan dat het veel sneller kan!
Hebben jullie misschien een idee?
Groeten,
Dikharz
Edit: Codetags toegevoegd