Ik zou beginnen met het getal onder te verdelen in onderlinge cijfers.
De grootte van het getal kan je achterhalen door steeds door 10 te delen en de rest te laten vallen. Ik weet echter niet meer volkomen welke toepassingen vb hiervoor heeft maar zo zul je het waarschijnlijk ook wel vinden:
'getal x is het te verwerken getal'
'teller bepaalt de grootte'
teller =0;
Do
x = x/10
teller = teller +1
Loop while(x>1)
zoiets ongeveer me dunkt.
Daarna zou ik de getallen onderling afscheiden door de rest van een deling door 10 te blijven doen totdat er niets meer over is en in een array 'input' stoppen.
Zo wordt 5423: 5-4-2-3
(index) = waarde
(4)=5
(3)=4
(2)=2
(1)=1
Daarna zou ik een array maken met tekstvoor de duizendtallen en honderdtallen, etc + ook de getallen kleiner als 10... alles behalve de tientallen deze bevatten wat onregelmatigheden.
vb van de array 'tekst'
(index) = "<tekst>"
(1) = "een"
(2) = "twee"
(3) = "drie"
(4) = "vier"
(5) = "vijf"
(6) = "zes"
(7) = "zeven"
(8) = "acht"
(9) = "negen"
Omdat de tientallen een soort van 'abnormaliteit zijn' zou ik ze in een 2de array 'tientallen' stoppen
(1) = "tien"
(2) = "twintig"
(3) = "dertig"
(4) = "veertig"
(5) = "vijftig"
(6) = "zestig"
(7) = "zeventig"
(8) = "tachtig"
(9) = "negentig"
Hierna kan je met een for lus elk getal afgaan van de gesplitste array getallen en de textstring 'output' declaren.
output = ""
For(i= teller to 1 step -1)
if i%3 >2 AND input(i) <> 1
'Als je je niet bij een tiental bevindt en je komt een "1 "tegen moet je ze niet schrijven. 'een honderd' of 'een duizend' ziet er gewoon ronduit debiel uit
output = output & " " & tekst(i)
end if
if i%3 =2 'als er een tiental gevonden is
output = output & " " & tientallen(i)
end if
'Nu moet je nog de woordjes 'duizend' en honderd op de juiste plaats krijgen
if i = 7 output = output & " miljoen"
if i = 4 output = output & " duizend"
if i%3 = 0 output = output & " honderd"
next i
'offcourse zal je hiermee de specialekes zoals elf, twaalf, etc... niet verwerken deze zijn abnormaal t.o.v. de regel, maar je kan deze eventueel opvangen met if statements
next i
Schiet me niet dood op syntaxis ik ben relatief lui om enige syntaxis in te werken. Ik heb het probleem puur logisch aangepakt en soort van 'code' geschreven ter extra uitleg.
Enfin soit heb deze code ook maar even in 5 minuutjes getype.
Ze is dus zeker nog niet uitgetest en foolproof.
Wanneer ze test zal je werken aan de outputs waar er iets mis is.