[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-smalltalk] Error while trying to write numbers in words
From: |
Canol Gokel |
Subject: |
[Help-smalltalk] Error while trying to write numbers in words |
Date: |
Sat, 5 Jul 2008 17:15:06 +0000 (UTC) |
User-agent: |
Loom/3.14 (http://gmane.org/) |
Hello,
I am trying to write a method called "inWords" for Number class to write a
number in words. For example:
15 inWords
should output:
fifteen
I wrote a code, it works for every 2 digit number except 19, for which it
outputs "tennine". I guess there is a logic error in algorithm but I cannot find
it. Anyone has an idea? Here is the code:
Number extend [
inWords [
| clone part_1 part_2 part_3 |
part_1 := ''.
part_2 := ''.
part_3 := ''.
clone := self copy.
((clone \\ 100) = 0) ifTrue: [
part_1 := ''.
part_2 := ''.
].
((clone \\ 100) < 20 and: [(clone \\ 100) > 10]) ifTrue: [
((clone \\ 100) = 11) ifTrue: [
part_2 := 'eleven'.
].
((clone \\ 100) = 12) ifTrue: [
part_2 := 'twelve'.
].
((clone \\ 100) = 13) ifTrue: [
part_2 := 'thirteen'.
].
((clone \\ 100) = 14) ifTrue: [
part_2 := 'fourteen'.
].
((clone \\ 100) = 15) ifTrue: [
part_2 := 'fifteen'.
].
((clone \\ 100) = 16) ifTrue: [
part_2 := 'sixteen'.
].
((clone \\ 100) = 17) ifTrue: [
part_2 := 'seventeen'.
].
((clone \\ 100) = 18) ifTrue: [
part_2 := 'eighteen'.
].
((clone \\ 100) = 19) ifTrue: [
part_2 := 'nineteen'.
].
] ifFalse: [
((clone \\ 10) = 0) ifTrue: [
part_1 := ''.
].
((clone \\ 10) = 1) ifTrue: [
part_1 := 'one'.
].
((clone \\ 10) = 2) ifTrue: [
part_1 := 'two'.
].
((clone \\ 10) = 3) ifTrue: [
part_1 := 'three'.
].
((clone \\ 10) = 4) ifTrue: [
part_1 := 'four'.
].
((clone \\ 10) = 5) ifTrue: [
part_1 := 'five'.
].
((clone \\ 10) = 6) ifTrue: [
part_1 := 'six'.
].
((clone \\ 10) = 7) ifTrue: [
part_1 := 'seven'.
].
((clone \\ 10) = 8) ifTrue: [
part_1 := 'eight'.
].
((clone \\ 10) = 9) ifTrue: [
part_1 := 'nine'.
].
clone := clone - (clone \\ 10).
((clone \\ 100) = 10) ifTrue: [
part_2 := 'ten'.
].
((clone \\ 100) = 20) ifTrue: [
part_2 := 'twenty'.
].
((clone \\ 100) = 30) ifTrue: [
part_2 := 'thirty'.
].
((clone \\ 100) = 40) ifTrue: [
part_2 := 'forty'.
].
((clone \\ 100) = 50) ifTrue: [
part_2 := 'fifty'.
].
((clone \\ 100) = 60) ifTrue: [
part_2 := 'sixty'.
].
((clone \\ 100) = 70) ifTrue: [
part_2 := 'seventy'.
].
((clone \\ 100) = 80) ifTrue: [
part_2 := 'eighty'.
].
((clone \\ 100) = 90) ifTrue: [
part_2 := 'ninety'.
].
].
^part_2, part_1
]
]
Transcript show: (19 inWords)
- [Help-smalltalk] Error while trying to write numbers in words,
Canol Gokel <=