Check Amount Writing. Translate a number into the English phrase.
This example algorithm fragment is only to get you started.
This shows how to pick off the digits from the right end of a number
and assemble a resulting string
from the left
end of the string
.
Note that the right-most two digits have special names,
requiring some additional cases above and beyond the simplistic loop
shown below. For example, 291 is "two hundred ninety one", where 29
is "twenty nine". The word for "2" changes, depending on the
context.
As a practical matter, you should analyze the number by taking
off three digits at a time, the expression (number %
1000)
does this. You would then format the three digit number
with words like "million", "thousand", etc.
Procedure 12.1. English Words For An Amount,
n
-
Initialization
Set result
← ""
Set tensCounter
← 0
-
Loop. While
n
> 0
-
Get Right Digit. Set digit
←
n
% 10, the remainder when divided by
10.
-
Make Phrase. Translate digit
to a
string
from "zero" to "nine".
Translate tensCounter
to a
string
from "" to
"thousand".
-
Assemble Result. Prepend digit
string
and
tensCounter
string
to the left end of the
result
string
.
-
Next Digit.
n
←
n
÷
10. tensCounter
←
tensCounter
+ 1.
-
Result. Return result
as the English
translation of
n
.
Roman Numerals. This is similar to translating numbers to English. Instead
we will translate them to Roman Numerals.
The Algorithm is similar to Check Amount Writing (above). You
will pick off successive digits, using %10 and /10 to gather the
digits from right to left.
The rules for Roman Numerals involve using four pairs of
symbols for ones and five, tens and fifties, hundreds and five
hundreds. An additional symbol for thousands covers all the relevant
bases.
When a number is followed by the same or smaller number, it
means addition. "II" is two 1's = 2. "VI" is 5 + 1 = 6.
When one number is followed by a larger number, it means
subtraction. "IX" is 1 before 10 = 9. "IIX" isn't allowed, this
would be "VIII".
For numbers from 1 to 9, the symbols are "I" and "V", and the
coding works like this.
- "I"
- "II"
- "III"
- "IV"
- "V"
- "VI"
- "VII"
- "VIII"
- "IX"
The same rules work for numbers from 10 to 90, using "X" and
"L". For numbers from 100 to 900, using the sumbols "C" and "D". For
numbers between 1000 and 4000, using "M".
Here are some examples. 1994 = MCMXCIV, 1956 = MCMLVI, 3888=
MMMDCCCLXXXVIII