Revision: 12957
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at April 2, 2009 06:51 by cruzlee
Initial Code
#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
Initial URL
Initial Description
Initial Title
dutch numbers written fully
Initial Tags
Initial Language
Ruby