Thread: C Programming: How to Display Output from Numbers to Words?

  1. #1
    Registered User mixmagz's Avatar
    Join Date
    Jan 2011
    Location
    C:Windows\system_32
    Posts
    4

    Question C Programming: How to Display Output from Numbers to Words?

    Hello guys! I'm new in C programming and i want to know how to display out in words if number is inputed, using switch or an if..else statement. I have a little program sample but in my case the number inputed not would be greater than 9000.
    Example:
    if inputed is 168
    The output will be "One Hundred-Sixty Eight"
    I have a program but it only prints 1-10 ..T_T
    Here's the code:

    Code:
    #include<stdio.h>
    void main()
    {
    int i=0;
    unsigned long int digit;
    char str[12],ch;
    puts(“Enter the number (less than 10 digit)”);
    scanf(“%lu”,&digit);
    ultoa(digit,str,10); /*converts an unsigned long int to string*/
    while(str[i]!=’\0′)
    {
    ch=str[i];
    i++;
    switch(ch)
    {
    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 ’0′:
    printf(“ZERO “);
    break;
    }
    }
    }
    That's the code i could only create but i need to know when big numbers is inputed and printing in words.Thanks!

  2. #2
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,336
    Do you know the names of the numbers after nine? Do you see a pattern in them? That might be a place to start.

    Also: I've never come across "ultoa" before. If it happens to exist on your system, then well done for using it; but I'm pretty sure you won't actually want to use it, in your case.

  3. #3
    Registered User mixmagz's Avatar
    Join Date
    Jan 2011
    Location
    C:Windows\system_32
    Posts
    4

    Question

    Here's my Code but still in error but the program runs..when i input 173 it displays one hundred seventy only!.. here's the code:

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    main()
    {
    int num, a,w,x,y,z,g;
    
    printf("Enter a number: ");
    scanf("%d", &num);
     
     
    a=num/1000;
    g=a/100;
    if (a==1)
       printf("one thousand");
    else if (a=g)
         printf("four");
    else if (a == 2)
       printf("two thousand");
    else if (a== 3)
       printf("three thousand");
    else if (a == 4)
       printf("four thousand");
    else if (a == 5)
       printf("five thousand");
    else if (a==6)
       printf("six thousand");
    else if (a == 7)
       printf("seven thousand");
    else if (a == 8)
       printf("eight thousand");
    else if (a == 9)
       printf("nine thousand");
     
    y=num % 1000;
    if (y >= 100 && y < 200)
       printf(" one hundred");
    else if (y >= 200 && y < 300)
       printf(" two hundred");
    else if (y >= 300 && y < 400)
       printf(" three hundred");
    else if (y >= 400 && y < 500)
       printf(" four hundred");
    else if (y >= 500 && y < 600)
       printf(" five hundred");
    else if (y >= 600 && y < 700)
       printf(" six hundred");
    else if (y >= 700 && y < 800)
       printf(" seven hundred");
    else if (y >= 800 && y < 900)
       printf(" eight hundred");
    else if (y >= 900 && y < 1000)
       printf(" nine hundred");
     
    z=num%100;
    if (z >= 20 && z < 30)
       printf( " twenty");
    else if (z >= 30 && z < 40)
       printf( " thirty");
    else if (z >= 40 && z < 50)
       printf( " forty");
    else if (z >= 50 && z < 60)
       printf( " fifty");
    else if (z >= 60 && z < 70)
       printf( " sixty");
    else if (z >= 70 && z < 80)
       printf( " seventy");
    else if (z >= 80 && z < 90)
       printf( " eighty");
    else if (z >= 90 && z < 100)
       printf( " ninety");
    else if (z >= 10 && z < 20)
      {w = z;}
     
    if (w == 10)
       printf(" ten");
    else if (w == 11)
       printf(" eleven");
    else if (w ==12)
       printf(" twelve");
    else if (w == 13)
       printf(" thirteen");
    else if (w == 14)
       printf(" fourteen");
    else if (w == 15)
       printf(" fifteen");
    else if (w == 16)
       printf(" sixteen");
    else if (w == 17)
       printf(" seventeen");
    else if (w == 18)
       printf(" eighteen");
    else if (w == 19)
       printf(" nineteen");
     
     
    if (z < 10 || z >= 20)
       {x = z % 10;}
    else if (x == 1)
       printf(" one");
    else if (x == 2)
       printf(" two");
    else if (x == 3)
       printf(" three");
    else if (x == 4)
       printf(" four");
    else if (x == 5)
       printf(" five");
    else if (x == 6)
       printf(" six");
    else if (x == 7)
       printf(" seven");
    else if (x == 8)
       printf(" eight");
    else if (x == 9)
       printf(" nine");
       
       getch();
       }
    Need some help about these..

  4. #4
    Registered User mixmagz's Avatar
    Join Date
    Jan 2011
    Location
    C:Windows\system_32
    Posts
    4

    Thumbs up

    Hello Guys Thank you for the codes specially ne55... ^_^ who PM me..
    I want to share with you the code I've made using conditional statement..with guide of ne55..

    here's my program:

    Code:
    #include <conio.h> 
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    char *make_words(char *s, int ncomma);
    char *insert_comma(long n, int *ncomma);
    char *int2words(int n);
    int a;
     
    int main(void)
    {
     
    
    
     printf("Enter number: ");
     scanf("%d",&a);
      printf("%d = %s\n",a,int2words(a));
    
     
      getch();  
      return 0;
    }
    
    char *make_words(char *s, int ncomma)
    {
      int i, len, rest = 0;
      char *p = NULL;
      static char zzz[256];
     
      static char *ones[] = {"one ","two ","three ","four ",
        "five ","six ","seven ","eight ","nine "};
      static char *tens[] = {"ten ","eleven ","twelve ","thirteen ",
        "fourteen ","fifteen ","sixteen ","seventeen ","eighteen ","nineteen "};
      static char *twenties[] = {"","twenty ","thirty ","forty ",
        "fifty ","sixty ","seventy ","eighty ","ninety "};
      static char *hundreds[] = {
        "hundred ","thousand ","million "};
     
      memset(zzz, '\0', 256);  // fill with nulls
      len = strlen(s);
      for(i = 0; i < len; i++)
      {
     
        if ((p = strchr((s[i] == ',') ? &s[++i] : &s[i], ',')) == NULL)
        {
          p = &s[strlen(s)];
        }
        if (s[i] == '0')
        {
          continue;  // skip one iteration
        }
        if ((rest = (p - &s[i])) != 0)
        {
          if (rest == 3)
          {
            strcat(zzz, ones[s[i] - '0' - 1]);
            strcat(zzz, hundreds[0]);
    
            if (len == 7 && s[2] == '0')  strcat(zzz, hundreds[1]);
            if (len == 11 && s[2] == '0')  strcat(zzz, hundreds[2]);
          }
          else if (rest == 2) 
          {
            if (s[i] == '1')
            {
              strcat(zzz, tens[s[++i] - '0']);
              rest--;
            }
            else
            {
              strcat(zzz, twenties[s[i] - '0' - 1]);
            }
          }
          else
            strcat(zzz, ones[s[i] - '0' - 1]);
        }
        if (rest == 1 && ncomma != 0)
        {
          strcat(zzz, hundreds[ncomma--]);
        }
      }
      return zzz;
    }
     
    
    char *insert_comma(long n, int *ncomma)
    {
      static char zzz[30];
      int i = 0;
      char *p = &zzz[sizeof(zzz)-1];
     
      *p = '\0';
      *ncomma = 0;
      do 
      {
        if (i % 3 == 0 && i != 0) 
        {
          *--p = ',';
          ++*ncomma;
        }
         *--p = (char)('0' + n % 10);
        n /= 10;
        i++;
      } while(n != 0);
      return p;
    }
     
    char *int2words(int n)
    {
      int nc;
      char *ps, *zzz, *minus;
      char *buffer;
      buffer = (char *) malloc(256);
     
      // save any - sign
      if (n < 0)
      {
        minus = "minus";
        n = abs(n);
      }
      else
      {
        minus = "";
      }
     
      ps = insert_comma(n, &nc);
    
      zzz = make_words(ps, nc);
     
      sprintf(buffer,"%s %s", minus, zzz);
     
      return buffer;
      getch();
    }
    Thank You guys .. Marked as SOLVED!

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 5
    Last Post: 12-21-2007, 01:38 PM
  2. Destinguish between numbers and words
    By Suchy in forum C++ Programming
    Replies: 3
    Last Post: 10-09-2007, 12:48 PM
  3. output file display -- Need Help
    By boostpower in forum C Programming
    Replies: 2
    Last Post: 04-06-2006, 01:50 PM
  4. Converting Numbers to Words
    By denizengt in forum C Programming
    Replies: 20
    Last Post: 11-05-2003, 09:19 PM
  5. converting numbers into words
    By Kozam in forum C Programming
    Replies: 2
    Last Post: 09-30-2003, 07:49 AM

Tags for this Thread