#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"; } 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"; } 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) { 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 if (num % 10 == 0) { return TensPrefix(num); } else { return TensPrefix(10 * (num/10)) + " " + DigitToString(num % 10); } } main() { int number; cout << "enter number between 0 and 100: "; cin >> number; cout << number << " = " << NumToString(number) << endl; }