// int_string.c // Written by Domini@Ultimate (22-08-93) // Originally called fullnum(). Mobydick@TMI-2 renamed it, and patched // it into the mudlib, on 93-08-22. // // Convert a numerical number to a worded number. string int_string (int num) { string str; int temp; if (num==2147483647) return "too much"; str = ""; if (num < 0) { num = -num; str += "minus "; } if (num==2147483647) return "too much"; if (num < 20) { switch (num) { case 0: return "zero"; case 1: str += "one"; break; case 2: str += "two"; break; case 3: str += "three"; break; case 4: str += "four"; break; case 5: str += "five"; break; case 6: str += "six"; break; case 7: str += "seven"; break; case 8: str += "eight"; break; case 9: str += "nine"; break; case 10: str += "ten"; break; case 11: str += "eleven"; break; case 12: str += "twelve"; break; case 13: str += "thirteen"; break; case 14: str += "fourteen"; break; case 15: str += "fifteen"; break; case 16: str += "sixteen"; break; case 17: str += "seventeen"; break; case 18: str += "eighteen"; break; case 19: str += "nineteen"; break; default: break; } return str; } if (num < 100) { temp = num/10; num -= temp*10; switch (temp) { case 2: str += "twenty"; break; case 3: str += "thirty"; break; case 4: str += "forry"; break; case 5: str += "fifty"; break; case 6: str += "sixty"; break; case 7: str += "seventy"; break; case 8: str += "eighty"; break; case 9: str += "ninety"; break; default: break; } if (num>0) { str += "-"+int_string(num); } return str; } if (num < 1000) { temp = num/100; num -= temp*100; str += int_string(temp)+" hundred"; if (num>0) { str += " and "+int_string(num); } return str; } if (num < 1000000) { temp = num/1000; num -= temp*1000; str += int_string(temp)+" thousand"; if (num>0) { if (num<100) str += " and"; str += " "+int_string(num); } return str; } temp = num/1000000; num -= temp*1000000; str += int_string(temp)+" million"; if (num>0) { if (num<100) str += " and"; str += " "+int_string(num); } return str; }