String Exercises

  1. 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

    1. Initialization

      Set result ← ""

      Set tensCounter ← 0

    2. Loop. While n > 0

      1. Get Right Digit. Set digit n % 10, the remainder when divided by 10.

      2. Make Phrase. Translate digit to a string from "zero" to "nine". Translate tensCounter to a string from "" to "thousand".

      3. Assemble Result. Prepend digit string and tensCounter string to the left end of the result string.

      4. Next Digit.  n n ÷ 10. tensCountertensCounter + 1.

    3. Result. Return result as the English translation of n .

  2. 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.

    1. "I"
    2. "II"
    3. "III"
    4. "IV"
    5. "V"
    6. "VI"
    7. "VII"
    8. "VIII"
    9. "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