GeekInterview.com
Series: Subject: Topic:
Question: 285 of 589

write a program to convert numbers into words?
for ex: 547

Five Hundred and Forty Seven

Asked by: Interview Candidate | Asked on: Oct 4th, 2006
Showing Answers 1 - 7 of 7 Answers
kamatchi

Answered On : Nov 6th, 2006

void main()
{
char a[10][10]={"ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
char b[10][10]={"ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINTEEN"};
char c[10][10]={"TEN","TWENTY","THIRTY","FOURTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINTY"};
int no,t;
clrscr();
printf("ttEnter the number");
scanf("%d",&no);
printf("tt");
if(no<9999)
{
 if(no>1000)
 {
  t=no/1000;
  no=no%1000;
  printf("%s THOUSAND",a[t-1]);
 }
 if(no>100)
 {
  t=no/100;
  no=no%100;
  printf(" %s HUNDRED AND ",a[t-1]);
 }
 if(no>=10 && no<20)
 {
  t=no/10;
  printf(" %s",b[t-1]);
 }
 if(no>19 && no<=100)
 {
  t=no/10;
  no=no%10;
  printf("%s",c[t-1]);
 }
 if(no<10)
 {
  printf(" %s",a[no-1]);
 }
}
else
printf("ttEnter the small number");
getch();
}

  
Login to rate this answer.
Sundar A

Answered On : Nov 29th, 2006

Gud idea!!! But how will "1003" Work???

  
Login to rate this answer.
abhimanipal

Answered On : Jul 16th, 2009

View all answers by abhimanipal

This is not a final answer ...More an algorithm

Suppose we will consider numbers till 9,999 only ...

Array1 --> One,two,three,four,five ......nine
Array2 --> Eleven, Twelve,thirteen,Fourteen.....Nineteen
Array3 --> Twenty,Thirty,Forty,Fifty,Sixty......Ninety
Array4 --> One hundred,two hundred,three hundred,four hundred..... nine hundred
Array5 --> One thousand, two thousand, three thousand .... nine thousand

      First check if the number is between 11-20
      If yes then print the number
      If no then print the last digit from array1 and second last digit from array3.
      Similary print the digit in the hundred place from Array 4
      Then print the digit in thousands place from Array5

For going beyond this we again use the above technique only....
Also this algorithm prints out the digits in reverse. So to print correct insert in reverse in a linked list. So when the list prints it will print straight.

  
Login to rate this answer.

#include<stdio.h>
main()
{
int n,temp,rev=0;
scanf("%d",&n);
temp=n;
while(n>0)
{
rev=(rev*10)+(n%10);
n=n/10;
}
printf("%d",rev);
while(rev>0)
{
switch(rev%10)
{
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;
}
rev=rev/10;
}
while(temp%10==0)
{
printf("zero ");
temp=temp/10;
}

  
Login to rate this answer.
Sameer Habib Khan

Answered On : Dec 17th, 2012

Here is Better code that converts number (upto 9 digit) to word

Code
  1. /*
  2.         Author: Sameer Khan
  3.         Date:   17/12/2012
  4.         Program:Number to Word Convertor
  5.  
  6. */
  7.  
  8.  
  9. import java.io.*;
  10. import java.util.*;
  11.  
  12. public class NumberToWord
  13. {
  14.        
  15.         static String word="";
  16.         public static void main(String...args) throws IOException
  17.         {
  18.        
  19.                 String response="";
  20.                 do{
  21.                         BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
  22.                
  23.                         System.out.println("
  24. Enter A Number(Upto 9 Digit): ");
  25.                         String input=br.readLine();
  26.                        
  27.                         Convert(input);
  28.                         System.out.println("
  29. Word: "+word);
  30.                        
  31.                         word="";//reset
  32.                        
  33.                         System.out.println("
  34. Do You Want to Continue..?(y/n)");
  35.                         response=br.readLine();
  36.                
  37.                 }while(response.equalsIgnoreCase("y"));
  38.                
  39.        
  40.         }
  41.        
  42.         public static void Convert(String input)
  43.         {
  44.                        
  45.                 int number=Integer.parseInt(input);
  46.                 if(number==0)
  47.                 {
  48.                         word="Zero";
  49.                         return;
  50.                 }
  51.                 int d=0;
  52.                
  53.                 int len=input.length(); // Get total digits in number
  54.                         switch(len)
  55.                         {
  56.                                 case 1:
  57.                                                 ones(number);
  58.                                                 break;
  59.                                 case 2:
  60.                                                 twos(number);
  61.                                                 break;                 
  62.                                 case 3:
  63.                                                 threes(number);        
  64.                                                 break;
  65.                                 case 4:
  66.                                                 fours(number);
  67.                                                 break; 
  68.                                 case 5:
  69.                                                 fives(number);
  70.                                                 break;
  71.                                 case 6:
  72.                                                 sixs(number);
  73.                                                 break;
  74.                                 case 7:
  75.                                                 sevens(number);
  76.                                                 break;
  77.                                 case 8:
  78.                                                 eights(number);
  79.                                                 break;
  80.                                 case 9:
  81.                                                 nines(number);
  82.                                                 break;                                                                                 
  83.                                                        
  84.                         }
  85.                
  86.                
  87.        
  88.        
  89.                        
  90.         }
  91.  
  92.         public static void ones(int c)
  93.         {
  94.                         switch(c)
  95.                         {
  96.                                 case 1: word+="One";
  97.                                                 break;
  98.                                 case 2: word+="Two";
  99.                                                 break;                 
  100.                                 case 3:word+="Three";  
  101.                                                 break;
  102.                                 case 4:word+="Four";   
  103.                                                 break;
  104.                                 case 5:word+="Five";   
  105.                                                 break;                                         
  106.                                 case 6:word+="Six";    
  107.                                                 break;
  108.                                 case 7:word+="Seven";  
  109.                                                 break;
  110.                                 case 8:word+="Eight";  
  111.                                                 break;
  112.                                 case 9:word+="Nine";   
  113.                                                 break;                                                                                                 
  114.                         }
  115.        
  116.         }
  117.  
  118.         public static void twos(int c)
  119.         {
  120.                         if(c>9&&c<20)
  121.                         {
  122.                            switch(c)
  123.                            {
  124.                                
  125.                                 case 10: word+="Ten";
  126.                                                 break;
  127.                                 case 11: word+="Eleven";
  128.                                                 break;
  129.                                 case 12: word+="Twelve";
  130.                                                 break;                 
  131.                                 case 13:word+="Thirteen";              
  132.                                                 break;
  133.                                 case 14:word+="Fourteen";              
  134.                                                 break;
  135.                                 case 15:word+="Fifteen";               
  136.                                                 break;
  137.                                 case 16:word+="Sixteen";               
  138.                                                 break;
  139.                                 case 17:word+="Seventeen";             
  140.                                                 break;
  141.                                 case 18:word+="Eightteen";             
  142.                                                 break;
  143.                                 case 19:word+="Nineteen";              
  144.                                                 break;
  145.                                        
  146.                           }
  147.                        
  148.                         }
  149.                         else
  150.                         {
  151.                        
  152.                            if(c>=20&&c<30)
  153.                                 {
  154.                                         word=word+"Twenty ";
  155.                                         ones(c%10);    
  156.                                        
  157.                                 }
  158.                                 if(c>=30&&c<40)
  159.                                 {
  160.                                         word=word+"Thirty ";
  161.                                         ones(c%10);    
  162.                                        
  163.                                 }
  164.                                 if(c>=40&&c<50)
  165.                                 {
  166.                                         word=word+"Fourty ";
  167.                                         ones(c%10);    
  168.                                        
  169.                                 }
  170.                                 if(c>=50&&c<60)
  171.                                 {
  172.                                         word=word+"Fifty ";
  173.                                         ones(c%10);    
  174.                                        
  175.                                 }
  176.                                 if(c>=60&&c<70)
  177.                                 {
  178.                                         word=word+"Sixty ";
  179.                                         ones(c%10);    
  180.                                        
  181.                                 }
  182.                                 if(c>=70&&c<80)
  183.                                 {
  184.                                         word=word+"Seventy ";
  185.                                         ones(c%10);    
  186.                                        
  187.                                 }
  188.                                 if(c>=80&&c<90)
  189.                                 {
  190.                                         word=word+"Eighty ";
  191.                                         ones(c%10);    
  192.                                        
  193.                                 }
  194.                                 if(c>=90&&c<100)
  195.                                 {
  196.                                         word=word+"Ninety ";
  197.                                         ones(c%10);    
  198.                                        
  199.                                 }                              
  200.                
  201.                            
  202.                         }  
  203.        
  204.         }
  205.        
  206.         public static void threes(int c)
  207.         {
  208.                         if(c!=0)
  209.                         {      
  210.                                 ones(c/100);
  211.                                 word=word+" Hundred ";
  212.                                 twos(c%100);
  213.                         }              
  214.         }
  215.  
  216.         public static void fours(int c)
  217.         {
  218.                        
  219.                         ones(c/1000);
  220.                         c=c%1000;
  221.                         word=word+" Thousand ";
  222.                         threes(c%1000);
  223.                                
  224.         }
  225.        
  226.         public static void fives(int c)
  227.         {
  228.                 twos(c/1000);
  229.                 fours(c%1000);
  230.                
  231.                
  232.         }
  233.        
  234.         public static void sixs(int c)
  235.         {
  236.                 ones(c/100000);
  237.                 word=word+" Lakh ";
  238.                 if((c%100000)!=0)
  239.                         fives(c%100000);
  240.                
  241.                
  242.         }
  243.        
  244.         public static void sevens(int c)
  245.         {
  246.                 twos(c/100000);
  247.                 word=word+" Lakhs ";
  248.                 if((c%100000)!=0)
  249.                         fives(c%100000);
  250.         }
  251.        
  252.         public static void eights(int c)
  253.         {
  254.                 ones(c/10000000);
  255.                 word=word+" Crore ";
  256.                 if((c%100000)!=0)
  257.                         sevens(c%10000000);    
  258.        
  259.         }
  260.        
  261.         public static void nines(int c)
  262.         {
  263.                 twos(c/10000000);
  264.                 word=word+" Crores ";
  265.                 if((c%100000)!=0)
  266.                         sevens(c%10000000);    
  267.        
  268.         }
  269.                  
  270.  
  271. }

  
Login to rate this answer.
mm

Answered On : Apr 22nd, 2013

Code
  1. #include<stdio.h>
  2. #include<conio.h>
  3. void pw(long,char[]);
  4. char *one[]={" "," one"," two"," three"," four"," five"," six"," seven","eight"," Nine"," ten"," eleven"," twelve"," thirteen"," fourteen","fifteen"," sixteen"," seventeen"," eighteen"," nineteen"};
  5. char *ten[]={" "," "," twenty"," thirty"," forty"," fifty"," sixty","seventy"," eighty"," ninety"};
  6. int main()
  7. {
  8.  long n;
  9. clrscr();
  10.  printf("Enter any 9 digit no: ");
  11.  scanf("%9ld",&n);
  12.  
  13.  if(n<=0)
  14.                 printf("Enter numbers greater than 0");
  15.  else
  16.  {
  17.                   pw((n/10000000),"crore");
  18.                   pw(((n/100000)%100),"lakh");
  19.                   pw(((n/1000)%100),"thousand");
  20.                   pw(((n/100)%10),"hundred");
  21.                   pw((n%100)," ");
  22.  }
  23.  //getch();
  24.  return 0;
  25. }
  26. void pw(long n,char ch[])
  27. {
  28.  (n>19)?printf("%s %s ",ten[n/10],one[n%10]):printf("%s ",one[n]);
  29.  if(n)printf("%s ",ch);
  30. }

Code
  1. #include<stdio.h>
  2. #include<conio.h>
  3. void pw(long,char[]);
  4. char *one[]={" "," one"," two"," three"," four"," five"," six"," seven","eight"," Nine"," ten"," eleven"," twelve"," thirteen"," fourteen","fifteen"," sixteen"," seventeen"," eighteen"," nineteen"};
  5. char *ten[]={" "," "," twenty"," thirty"," forty"," fifty"," sixty","seventy"," eighty"," ninety"};
  6.  
  7.  
  8. int main()
  9. {
  10.  long n;
  11. clrscr();
  12.  printf("Enter any 9 digit no: ");
  13.  scanf("%9ld",&n);
  14.  
  15.  if(n<=0)
  16.                 printf("Enter numbers greater than 0");
  17.  else
  18.  {
  19.                   pw((n/10000000),"crore");
  20.                   pw(((n/100000)%100),"lakh");
  21.                   pw(((n/1000)%100),"thousand");
  22.                   pw(((n/100)%10),"hundred");
  23.                   pw((n%100)," ");
  24.  }
  25.  //getch();
  26.  return 0;
  27. }
  28.  
  29.  
  30. void pw(long n,char ch[])
  31. {
  32.  (n>19)?printf("%s %s ",ten[n/10],one[n%10]):printf("%s ",one[n]);
  33.  if(n)printf("%s ",ch);
  34. }
  35.  

  
Login to rate this answer.
jbode

Answered On : Apr 24th, 2013

View all answers by jbode

The following handles up to 32-bit integer values. Not the prettiest code in the world, but it works pretty well. Sample output: [fbgo448@n9dvap997]~/prototypes/numbers: ./numbers 1 one [fbgo448@n9dvap997]~/prototypes/numbers: ./numbers 12 twelve [fbgo448@n9dvap997]~/prototypes/numbers: ./numbers 123 one hundred and twenty-three [fbgo448@n9dvap997]~/prototypes/numbers: ./numbers 1234 one thousand, two hundred and thirty-four [fbgo448@n9dvap997]~/prototypes/numbers: ./numbers 12345 twelve thousand, three hundred and forty-five [fbgo448@n9dvap997]~/prototypes/numbers: ./numbers 123456 one hundred and twenty-three thousand, four hundred and fifty-six [fbgo448@n9dvap997]~/prototypes/numbers: ./numbers 1234567 one million, two hundred and thirty-four thousand, five hundred and sixty-seven [fbgo448@n9dvap997]~/prototypes/numbers: ./numbers -1234567890 minus one billion, two hundred and thirty-four million, five hundred and sixty-seven thousand, eight hundred and ninety

Code
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. static char *units[] = {
  6.     "", "one", "two", "three", "four",
  7.     "five", "six", "seven", "eight", "nine"
  8. };
  9.  
  10. static char *teens[] = {
  11.     "ten", "eleven", "twelve", "thirteen", "fourteen",
  12.     "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"
  13. };
  14.  
  15. static char *decades[] = {
  16.     "", "", "twenty", "thirty", "forty", "fifty", "sixty",
  17.     "seventy", "eighty", "ninety"
  18. };
  19.  
  20. static char *magnitudes[] = {
  21.     "", "thousand", "million", "billion"
  22. };
  23.  
  24. /**
  25.  * Return the total number of digits in the value
  26.  */
  27. int getDigits( long val )
  28. {
  29.    return (int) (floor( log10( (double) abs( val )))) + 1;
  30. }
  31.  
  32. /**
  33.  * Print each century, a group of up to 3 digits
  34.  *
  35.  *    1  => one
  36.  *   12  => twelve
  37.  *  123  => one hundred twenty-three
  38.  */
  39. void printCentury( int val )
  40. {
  41.   char *join = "";
  42.   if ( val > 99 )
  43.   {
  44.     int cent = val / 100;
  45.     printf( "%s hundred ", units[cent] );
  46.     val -= cent * 100;
  47.     if ( val > 0 )
  48.       join = "and ";
  49.   }
  50.  
  51.   if ( val > 19 )
  52.   {
  53.     printf( "%s%s", join, decades[val / 10] );
  54.     if ( val % 10 > 0 )
  55.       printf( "-%s ", units[val % 10] );
  56.     else
  57.       putchar(   );
  58.   }
  59.   else if ( val >= 10 )
  60.   {
  61.     printf( "%s%s ", join, teens[val % 10] );
  62.   }
  63.   else if ( val > 0 )
  64.   {
  65.     printf( "%s%s ", join, units[val] );
  66.   }
  67. }
  68.  
  69. int main( int argc, char **argv )
  70. {
  71.   long val = 0;
  72.  
  73.   if ( argc > 1 )
  74.   {
  75.     val = strtol( argv[1], NULL, 10 );
  76.   }
  77.   else
  78.   {
  79.     fprintf( stderr, "USAGE: %s <number>\n", argv[0] );
  80.     return 0;
  81.   }
  82.  
  83.   if ( val < 0 )
  84.   {
  85.     printf( "minus " );
  86.     val = -val;
  87.   }
  88.  
  89.   if ( val == 0 )
  90.     printf( "zero" );
  91.   else
  92.   {
  93.     /**
  94.      * Break value into groups of hundreds,
  95.      * such as:
  96.      *
  97.      *       12 =         12
  98.      *      123 =>       123
  99.      *     1234 =>     1 234
  100.      *    12345 =>    12 345
  101.      *   123456 =>   123 456
  102.      *  1234567 => 1 234 567
  103.      *
  104.      * and print each group with the proper
  105.      * magnitude (one million, two hundred and thirty-four
  106.      * thousand, five hundred and sixty-seven for the last
  107.      * example)
  108.      */
  109.     char *sep = "";
  110.     while ( val > 100L )
  111.     {
  112.       int digits = getDigits( val );
  113.       int mag = (digits - 1) / 3;
  114.       long order = (long) ( pow (10.0, 3 * mag ));
  115.       long cent = val / order;
  116.       printf( "%s", sep );
  117.       sep = ", ";
  118.       printCentury( (int) cent );
  119.       printf( "%s", magnitudes[mag] );
  120.       val -= cent * order;
  121.     }
  122.     if ( val > 0 && sep != "" )
  123.       printf( " and " );
  124.     printCentury( val );
  125.   }
  126.   putchar(\n);
  127.   return 0;
  128. }
  129.  

  
Login to rate this answer.

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.

Related Open Questions

Ads

Connect

twitter fb Linkedin GPlus RSS

Ads

Interview Question

 Ask Interview Question?

 

Latest Questions

Interview & Career Tips

Get invaluable Interview and Career Tips delivered directly to your inbox. Get your news alert set up today, Once you confirm your Email subscription, you will be able to download Job Inteview Questions Ebook . Please contact me if you there is any issue with the download.