/*bignumwords.c - print the English words representing any given number from 0
  to 999,999.  Copyright (c) 1998 by Matthew Belmonte.*/

/*print the word that represents the given number in [1,19]*/
static void print_lownums(n)
int n;
  {
  switch(n)
    {
    case 1:
      printf("one"); break;
    case 2:
      printf("two"); break;
    case 3:
      printf("three"); break;
    case 4:
      printf("four"); break;
    case 5:
      printf("five"); break;
    case 6:
      printf("six"); break;
    case 7:
      printf("seven"); break;
    case 8:
      printf("eight"); break;
    case 9:
      printf("nine"); break;
    case 10:
      printf("ten"); break;
    case 11:
      printf("eleven"); break;
    case 12:
      printf("twelve"); break;
    case 13:
      printf("thirteen"); break;
    case 14:
      printf("fourteen"); break;
    case 15:
      printf("fifteen"); break;
    case 16:
      printf("sixteen"); break;
    case 17:
      printf("seventeen"); break;
    case 18:
      printf("eighteen"); break;
    case 19:
      printf("nineteen");
    }
  }

/*print the word that represents the given number in {20,30,40,50,60,70,80,90}*/
static void print_tens(n)
int n;
  {
  switch(n)
    {
    case 20:
      printf("twenty"); break;
    case 30:
      printf("thirty"); break;
    case 40:
      printf("forty"); break;
    case 50:
      printf("fifty"); break;
    case 60:
      printf("sixty"); break;
    case 70:
      printf("seventy"); break;
    case 80:
      printf("eighty"); break;
    case 90:
      printf("ninety");
    }
  }

/*print the word that represents the given number in [1,999]*/
static void print_hundreds(n)
int n;
  {
  if(n >= 100)
    {
    print_lownums(n/100);
    printf(" hundred ");
    n %= 100;
    }
  if(n >= 20)
    {
    print_tens(n/10*10);
    n %= 10;
    if(n != 0)
      {
      printf("-");
      print_lownums(n);
      }
    }
  else print_lownums(n);
  }

/*print the word that represents the given number in [0,999999]*/
static void print_num(n)
long n;
  {
  if(n >= 1000L)
    {
    print_hundreds((int)(n/1000L));
    printf(" thousand ");
    n %= 1000L;
    if(n != 0L)
      print_hundreds((int)n);
    }
  else if(n == 0L)
    printf("zero");
  else
    print_hundreds((int)n);
  printf("\n");
  }

int main()
  {
  long n;
  printf("Enter a positive integer from 0 to 999,999: ");
  scanf("%ld", &n);
  print_num(n);
  return 0;
  }
