49 lines
1.6 KiB
Plaintext
49 lines
1.6 KiB
Plaintext
10 print chr$(147);chr$(14)
|
|
20 dim s$(11),ts$(11),t$(11),o$(11):co=39
|
|
30 for i=0 to 11:read s$(i),ts$(i),t$(i),o$(i):next
|
|
40 print "Enter a number";:input n$
|
|
45 ou$=""
|
|
50 if len(n$)>36 then print:print "Too long.":print:goto 40
|
|
51 print
|
|
55 rem check for negative
|
|
56 if left$(n$,1)="-" then n$=right$(n$,len(n$)-1):ou$="negative ":gosub 500
|
|
60 no=int((len(n$)-1)/3)
|
|
70 rem pad left side
|
|
71 p=(no+1)*3-len(n$)
|
|
75 if p>0 then n$="0"+n$:p=p-1:goto 75
|
|
77 if val(n$)=0 then ou$=s$(0):gosub 500:goto 125
|
|
80 rem calculate left to right
|
|
81 for i=no to 0 step -1:oi=no-i
|
|
85 ch$=mid$(n$,1+(oi*3),3)
|
|
90 h=val(mid$(ch$,1,1)):t=val(mid$(ch$,2,1)):s=val(mid$(ch$,3,1))
|
|
93 if h=0 and t=0 and s=0 then goto 120
|
|
95 if h>0 then ou$=s$(h)+" hundred ":gosub 500
|
|
100 if t>1 then ou$=t$(t)+mid$("- ",abs(s=0)+1,1):gosub 500
|
|
105 if t=1 then ou$=ts$(s)+" ":gosub 500
|
|
110 if t<>1 and s>0 then ou$=s$(s)+" ":gosub 500
|
|
115 ou$=o$(i)+" ":gosub 500
|
|
120 next i
|
|
125 print:print
|
|
130 print "Another? (y/n) ";
|
|
140 get k$:ifk$<>"y" and k$<>"n" then 140
|
|
145 print k$
|
|
150 if k$="y" then print:goto 40
|
|
200 end
|
|
500 rem print with word wrapping
|
|
505 cp=pos(0):nl=len(ou$)
|
|
510 if cp>co-nl then print
|
|
520 print ou$;
|
|
599 return
|
|
1000 data zero,ten,"",""
|
|
1001 data one,eleven,ten,thousand
|
|
1002 data two,twelve,twenty,million
|
|
1003 data three,thirteen,thirty,billion
|
|
1004 data four,fourteen,forty,trillion
|
|
1005 data five,fifteen,fifty,quadrillion
|
|
1006 data six,sixteen,sixty,quintillion
|
|
1007 data seven,seventeen,seventy,sextillion
|
|
1008 data eight,eighteen,eighty,septillion
|
|
1009 data nine,nineteen,ninety,octillion
|
|
1010 data "","","",nonillion
|
|
1011 data "","","",decillion
|