string number_as_string(int n); string query_num(int n, int limit) { string ret; int i; if (limit && n>limit) return "many"; /* this is a little pointless ... */ if (n < 0) return "many"; /* fo wraps... */ if (n > 99999) return "many"; /* sorry 'bout the hard limit */ ret = 0; if ((i = n/1000)) { n = n%1000; if (!n) return number_as_string(i) + " thousand"; ret = number_as_string(i) + " thousand"; } if ((i = n/100)) { n = n%100; if (ret) { if (!n) return ret + " and " + number_as_string(i) + " hundred"; ret += ", " + number_as_string(i) + " hundred"; } else { if (!n) return number_as_string(i) + " hundred"; ret = number_as_string(i) + " hundred"; } } if (ret) return ret + " and " + number_as_string(n); return number_as_string(n); } /* query_num() */ string number_as_string(int n) { string ret; if (!n) return "zero"; if (n<20 && n>9) return ({ "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" })[n-10]; ret = ({ "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"})[n/10]; if ((n = n%10)&&(ret!="")) ret += " "; return ret + ({ "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"})[n]; } /* number_as_string() */