/ Published in: Ruby
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#nederlandse_getallen.rb $stdout.sync = true def nlgetal getal if getal < 0 return 'Geef nou alsjeblieft gewoon een getal van 0 of hoger...' end if getal > 900 return 'Lager dan, of gelijk aan 900 alsjeblieft.' end if getal == 0 return 'nul' end uitvoer = '' eendeci = ['één', 'twee', 'drie', 'vier', 'vijf', 'zes', 'zeven', 'acht', 'negen'] tweedeci = ['tien', 'twintig', 'dertig', 'veertig', 'vijftig', 'zestig', 'zeventig', 'tachtig', 'negentig'] tieners = ['elf', 'twaalf', 'dertien', 'veertien', 'vijftien', 'zestien', 'zeventien', 'achttien', 'negentien'] # driedeci = 'honderd' # vierdeci = 'duizend' # zesdeci = 'miljoen' # voor later resterend = getal #Hier wordt bepaald hoeveel er van welk decimaal zijn. Deze waarden gaan in: [honderdtallen, tientallen, eenheden] honderdtallen = resterend/100 resterend = resterend -(honderdtallen*100) tientallen = resterend/10 resterend = resterend - (tientallen*10) eenheden = resterend #DERDE DECIMAAL #Altijd eerst de honderdtallen uitschrijven (in "uitvoer" stoppen) bij_uitvoer = '' bij_uitvoer = case honderdtallen when 0: '' when 1: 'honderd' when (2..9): eendeci[honderdtallen - 1] + 'honderd' end uitvoer << bij_uitvoer.to_s #EERSTE EN TWEEDE DECIMAAL #eenheden komen in het nederlands direct na de honderdtallen. #Maar niet in de "tieners". We moeten dus een tweedeling maken. #Er zijn een aantal mogelijke situaties #a. honderd zes (tientallen 0, eenheden >0) #b. honderd elf (tientallen 1) #c. honderd twintig (tientallen > 0, eenheden 0) #d. honderd zes en twintig (tientallen > 1, eenheden > 0) # #we moeten eerst scenario b uitwerken bij_uitvoer = '' bij_uitvoer = case when ((tientallen == 1) and (eenheden > 0)): tieners[eenheden - 1] #dan scenario c. when ((tientallen > 0) and (eenheden == 0)): tweedeci[tientallen - 1] #scenario a. moet uitgevoerd worden, ook als daarna d nog nodig is when ((eenheden > 0) and (tientallen == 0)): eendeci[eenheden - 1] #scenario d. uitvoeren, bij 2 en 3 moet er een trema op de tweeEntwintig when (((eenheden == 2) or (eenheden == 3)) and (tientallen > 1)): eendeci[eenheden - 1] + 'ën' + tweedeci[tientallen - 1] #scenario d. voor 1,4,5,6,7,8,9 when ((eenheden == 1) or (eenheden > 3)): eendeci[eenheden - 1] + 'en' + tweedeci[tientallen - 1] end uitvoer << bij_uitvoer.to_s return uitvoer end for i in (1..899) puts nlgetal(i) end