Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
58
Task/Number-names/FreeBASIC/number-names.basic
Normal file
58
Task/Number-names/FreeBASIC/number-names.basic
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
dim shared as string*9 lows(0 to 19) = {"", "one", "two", "three", "four",_
|
||||
"five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve",_
|
||||
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen",_
|
||||
"eighteen", "nineteen"}
|
||||
dim shared as string*7 tens(0 to 9) = {"", "", "twenty", "thirty", "forty",_
|
||||
"fifty", "sixty", "seventy", "eighty", "ninety"}
|
||||
dim shared as string*8 lev(0 to 3) = {"", "thousand", "million", "billion"}
|
||||
|
||||
function numname_int( byval n as integer ) as string
|
||||
if n = 0 then return "zero"
|
||||
if n < 0 then return "negative " + numname_int( -n )
|
||||
dim as integer t = -1, lasttwo, hundreds
|
||||
redim as integer triples(0 to 0)
|
||||
dim as string ret, tripname
|
||||
while n > 0
|
||||
t += 1
|
||||
triples(t) = n mod 1000
|
||||
n \= 1000
|
||||
wend
|
||||
for i as integer = t to 0 step -1
|
||||
tripname = ""
|
||||
if triples(i) = 0 then continue for
|
||||
lasttwo = triples(i) mod 100
|
||||
hundreds = triples(i)\100
|
||||
if lasttwo < 20 then
|
||||
tripname = lows(lasttwo) + tripname + " "
|
||||
else
|
||||
tripname = tens(lasttwo\10) + "-" + lows(lasttwo mod 10) + " " + tripname
|
||||
end if
|
||||
if hundreds > 0 then
|
||||
if lasttwo > 0 then tripname = " and " + tripname
|
||||
tripname = lows(hundreds)+" hundred" + tripname
|
||||
end if
|
||||
if i=0 and t>0 and hundreds = 0 then tripname = " and " + tripname
|
||||
tripname += lev(i)+" "
|
||||
ret = ltrim(ret) + ltrim(tripname)
|
||||
next i
|
||||
return ltrim(rtrim(ret))
|
||||
end function
|
||||
|
||||
function numname( n as double ) as string
|
||||
if n=int(n) then return numname_int(int(n))
|
||||
dim as string prefix = numname_int( int(abs(n)) )+" point "
|
||||
dim as string decdig = str(abs(n)-int(abs(n))), ret
|
||||
if n < 0 then prefix = "negative "+prefix
|
||||
ret = prefix
|
||||
for i as uinteger = 3 to len(decdig)
|
||||
ret = ret + numname(val(mid(decdig,i,1)))+" "
|
||||
next i
|
||||
return ltrim(rtrim(ret))
|
||||
end function
|
||||
|
||||
print numname(0)
|
||||
print numname(1.0)
|
||||
print numname(-1.7)
|
||||
print numname(910000)
|
||||
print numname(987654)
|
||||
print numname(100000017)
|
||||
Loading…
Add table
Add a link
Reference in a new issue