Monday, 24 June 2013

Program to get the number and print the number in words (number <= 99999). For eg. 1234 is one thousand two hundred thirty four.


#include <iostream>
#include <sstream>

using namespace std;
    string unit[] = {"","one","two","three","four","five","six","seven","eight","nine"};
    string teen[] = {"","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
    string ty[]   = {"","ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};

int countDigits(int n)
{
    int count = 0;
    while(n)
    {
            n/= 10;
            count++;
    }
    return count;
}


string numToString(int n)
{
    string result ;
    ostringstream r;
    r<<n;
    result = r.str();
    return result;
}

void print10000(int d1,int d2)
{
     if(d1 > 1)
     {
         cout<<ty[d1]<<" ";
         cout<<unit[d2]<<" ";
     }
     else
     {
         if(d2)
              cout<<teen[d1]<<" ";
         else
              cout<<"Ten ";
     }
     cout<<"thousand ";
}

void print1000(int d)
{
     if(d)
     {
          cout<<unit[d]<<" thousand ";
     }
}

void print100(int d)
{
     if(d)
     {
          cout<<unit[d]<<" hundred ";
     }
}

void print10(int d1,int d2)
{
     if(d1)
     {
         if(d1 > 1)
         {
             cout<<ty[d1]<<" ";
             cout<<unit[d2]<<" ";
         }
         else if(d2)
             cout<<teen[d2];
         else
             cout<<"Ten";
     }
     else if(d2)
     {
          cout<<unit[d2];
     }
}


string lengthFive(string number)
{
       int digit5,digit4,digit3,digit2,digit1;
       cout<<"Number is "<<number<<"\n";
       digit1 = number[4] - 48;
       digit2 = number[3] - 48;
       digit3 = number[2] - 48;
       digit4 = number[1] - 48;
       digit5 = number[0] - 48;
       print10000(digit5,digit4);
       print100(digit3);
       print10(digit2,digit1);
}

string lengthFour(string number)
{
       int digit4 = number[0] - 48;
       int digit3 = number[1] - 48;
       int digit2 = number[2] - 48;
       int digit1 = number[3] - 48;
       print1000(digit4);
       print100(digit3);
       print10(digit2,digit1);
}
string lengthThree(string number)
{
       int digit3 = number[0] - 48;
       int digit2 = number[1] - 48;
       int digit1 = number[2] - 48;
       print100(digit3);
       print10(digit2,digit1);
}

string lengthTwo(string number)
{
       int digit2 = number[0] - 48;
       int digit1 = number[1] - 48;
       print10(digit2,digit1);
}

string lengthOne(string number)
{
       int digit1 = number[0] - 48;
       cout<<unit[digit1];
}



int main()
{
    int n = 10002;

    if(!n)
    {
         cout<<"zero";
         return 0;
    }
    int len = countDigits(n);
    string number = numToString(n);
    switch(len)
    {
         case 1: lengthOne(number);break;
         case 2: lengthTwo(number);break;
         case 3: lengthThree(number);break;
         case 4: lengthFour(number);break;
         case 5: lengthFive(number);break;
         default: cout<<"Invalid";
    }
    system("pause");
}



No comments:

Post a Comment