From Astrachan, pp 143-144. --------------------------- #include #include "CPstring.h" // converts two digit numbers to English equivalent // Owen Astrachan, 6/8/95 string DigitToString(int num) // precondition: 0 <= num < 10 // postcondition: returns english equivalent, e.g., 1->one,...9->nine { if (0 == num) return "zero"; else if (1 == num) return "one"; else if (2 == num) return "two"; else if (3 == num) return "three"; else if (4 == num) return "four"; else if (5 == num) return "five"; else if (6 == num) return "six"; else if (7 == num) return "seven"; else if (8 == num) return "eight"; else if (9 == num) return "nine"; else return "?"; } string TensPrefix(int num) // precondition: 10 <= num <= 99 and num % 10 == 0 // postcondition: returns ten, twenty, thirty, forty, etc. // corresponding to num, e.g., 50->fifty { if (10 == num) return "ten"; else if (20 == num) return "twenty"; else if (30 == num) return "thirty"; else if (40 == num) return "forty"; else if (50 == num) return "fifty"; else if (60 == num) return "sixty"; else if (70 == num) return "seventy"; else if (80 == num) return "eighty"; else if (90 == num) return "ninety"; else return "?"; } string TeensToString(int num) // precondition: 11 <= num <= 19 // postcondition: returns eleven, twelve, thirteen, fourteen, etc. // corresponding to num, e.g., 15 -> fifteen { if (11 == num) return "eleven"; else if (12 == num) return "twelve"; else if (13 == num) return "thirteen"; else if (14 == num) return "fourteen"; else if (15 == num) return "fifteen"; else if (16 == num) return "sixteen"; else if (17 == num) return "seventeen"; else if (18 == num) return "eighteen"; else if (19 == num) return "nineteen"; else return "?"; } string NumToString(int num) // precondition: 0 <= num <= 99 // postcondition: returns english equivalent, e.g., 1->one, 13->thirteen { if (0 <= num && num < 10) { return DigitToString(num); } else if (10 < num && num < 20) { return TeensToString(num); } else if (num % 10 == 0) { return TensPrefix(num); } else { // concatenate ten's digit with one's digit return TensPrefix(10 * (num/10)) + "-" + DigitToString(num % 10); } } int main() { int number; cout << "enter number between 0 and 99: "; cin >> number; cout << number << " = " << NumToString(number) << endl; return 0; }