All the changes are down at the bottom void say_number(const int n) { if (n==0) print("zero"); else if (n==1) print("one"); else if (n==2) print("two"); else if (n==3) print("three"); else if (n==4) print("four"); else if (n==5) print("five"); else if (n==6) print("six"); else if (n==7) print("seven"); else if (n==8) print("eight"); else if (n==9) print("nine"); else if (n==10) print("ten"); else if (n==11) print("eleven"); else if (n==12) print("twelve"); else if (n==13) print("thirteen"); else if (n==14) print("fourteen"); else if (n==15) print("fifteen"); else if (n==16) print("sixteen"); else if (n==17) print("seventeen"); else if (n==18) print("eighteen"); else if (n==19) print("nineteen"); else if (n==20) print("twenty"); else if (n<0) { print("minus "); say_number(-n); } else if (n==30) print("thirty"); else if (n==40) print("forty"); else if (n==50) print("fifty"); else if (n==60) print("sixty"); else if (n==70) print("seventy"); else if (n==80) print("eighty"); else if (n==90) print("ninety"); else if (n<100) { say_number(n/10*10); print("-"); say_number(n%10); } else if (n<1000) { say_number(n/100); print(" hundred"); if (n%100 != 0) { print(" and "); say_number(n%100); } } else if (n<1000000) { say_number(n/1000); print(" thousand"); if (n%1000!=0) { print(" "); if (n%1000<100) print("and "); say_number(n%1000); } } else if (n<1000000000) { say_number(n/1000000); print(" million"); if (n%1000000!=0) { print(" "); if (n%1000000<100) print("and "); say_number(n%1000000); } } else something(); } Well, this just isn't interesting any more. But we do need to look at the next stage.