954,480 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Converting numbers to words in C++ using SWITCH Statements!!

I have to create a program that asks a person to enter a 2 digit number (10-99) and convert it into words. I've been working on this for days and I still don't see what I'm doing wrong! PLEASE HELP ME!!!
EXAMPLE:
27
twenty-seven

#include <iostream>
using namespace std;
int main()
{
	int num;
	int ones_digit = num%10;
	int tens_digit = num/10;

	cout << "Enter a two-digit number:\n";
	cin >> num;

	if (num>=20) && (num<100)
	{
		switch (tens_digit)
		{
			case 2:
				cout << " twenty- ";
				break;
			case 3:
				cout << " thirty- ";
				break;
			case 4:
				cout << " forty- ";
				break;
			case 5:
				cout << " fifty- ";
				break;
			case 6:
				cout << " sixty- ";
				break;
			case 7:
				cout << " seventy- ";
				break;
			case 8:
				cout << " eighty- ";
				break;
			case 9:
				cout << " ninety- ";
				break;
			default:
				cout << " Error ";
		}

		switch (ones_digit)
		{
			case 0:
				cout << " ";
				break;
			case 1:
				cout << "one";
				break;
			case 2:
				cout << "two";
				break;
			case 3:
				cout << "three";
				break;
			case 4:
				cout << "four";
				break;
			case 5:
				cout << "five";
				break;
			case 6:
				cout << "six";
				break;
			case 7:
				cout << "seven";
				break;
			case 8:
				cout << "eight";
				break;
			case 9:
				cout << "nine";
				break;
			default:
				cout << " Error ";
		}
	}

	if (num>=10) && (num=<19)
	{
		switch (num)
		{
			case 10:
				cout << "Ten";
				break;
			case 11:
				cout << "Eleven";
				break;
			case 12:
				cout << "Twelve";
				break;
			case 13:
				cout << "Thirteen";
				break;
			case 14:
				cout << "Fourteen";
				break;
			case 15:
				cout << "Fifteen";
				break;
			case 16:
				cout << "Sixteen";
				break;
			case 17:
				cout << "Seventeen";
				break;
			case 18:
				cout << "Eighteen";
				break;
			case 19:
				cout << "Nineteen";
				break;
			default:
				cout << " Error ";
		}
	}
	return 0;
}
adoleh
Newbie Poster
1 post since Feb 2011
Reputation Points: 10
Solved Threads: 0
 

You have some fundamental problems with your code especially the lack of a proper formating scheme..Also please use code tags.

#include <iostream>
using namespace std;
int main()
{
int num;

cout << "Enter a two-digit number:\n";
cin >> num;

int ones_digit = num%10;//preform these operations
int tens_digit = num/10;//after you get the value for num...not before


if ((num>=20) && (num<100))//if statement was wrong
{
switch (tens_digit)
{
case 2:
cout << " twenty- ";
break;
case 3:
cout << " thirty- ";
break;
case 4:
cout << " forty- ";
break;
case 5:
cout << " fifty- ";
break;
case 6:
cout << " sixty- ";
break;
case 7:
cout << " seventy- ";
break;
case 8:
cout << " eighty- ";
break;
case 9:
cout << " ninety- ";
break;
default:
cout << " Error ";
}

switch (ones_digit)
{
case 0:
cout << " ";
break;
case 1:
cout << "one";
break;
case 2:
cout << "two";
break;
case 3:
cout << "three";
break;
case 4:
cout << "four";
break;
case 5:
cout << "five";
break;
case 6:
cout << "six";
break;
case 7:
cout << "seven";
break;
case 8:
cout << "eight";
break;
case 9:
cout << "nine";
break;
default:
cout << " Error ";
}
}

if ((num >= 10) && (num <= 19))//if statement was wrong
{
switch (num)
{
case 10:
cout << "Ten";
break;
case 11:
cout << "Eleven";
break;
case 12:
cout << "Twelve";
break;
case 13:
cout << "Thirteen";
break;
case 14:
cout << "Fourteen";
break;
case 15:
cout << "Fifteen";
break;
case 16:
cout << "Sixteen";
break;
case 17:
cout << "Seventeen";
break;
case 18:
cout << "Eighteen";
break;
case 19:
cout << "Nineteen";
break;
default:
cout << " Error ";
}
}
return 0;
}
gerard4143
Nearly a Posting Maven
2,272 posts since Jan 2008
Reputation Points: 512
Solved Threads: 387
 
I have to create a program that asks a person to enter a 2 digit number (10-99) and convert it into words. I've been working on this for days and I still don't see what I'm doing wrong! PLEASE HELP ME!!!


With what? You didn't bother telling us what the problem is.

WaltP
Posting Sage w/ dash of thyme
Moderator
10,505 posts since May 2006
Reputation Points: 3,348
Solved Threads: 944
 

You're doing the calculations before you're getting the number, and since num will be 0 at that point, tens digit and ones digit will always equal zero, no matter what. You need to take in your number THEN do the calculations for tens digit and ones digit.

Red Goose
Junior Poster
116 posts since Jan 2011
Reputation Points: 43
Solved Threads: 21
 
#include <iostream>
#include <windows.h>
#include <math.h>
#include <cmath>
#include <string>
#include <sstream>

using namespace std;

	int num;
	int ones_digit;
	int tens_digit;

int main()
{	
    cout<<"Enter 1 or 2 digits\n\n";
    cin>> num;
    cin.ignore();
    
    string num2;
    stringstream out;
    out << num;
    num2 = out.str();
    num2.length();
    
    ones_digit = num%10;
    tens_digit = num/10;
    
    
    if ((num >= 0) && (num <=19))
    {
       switch(num)
             {
                               case 0: cout<<"Zero";
                               break;
                               
                               case 1: cout<<"One";
                               break;
                               
                               case 2: cout<<"Two";
                               break;
                               
                               case 3: cout<<"Three";
                               break;
                               
                               case 4: cout<<"Four";
                               break;
                               
                               case 5: cout<<"Five";
                               break;
                               
                               case 6: cout<<"Six";
                               break;
                               
                               case 7: cout<<"Seven";
                               break;
                               
                               case 8: cout<<"Eight";
                               break;
                               
                               case 9: cout<<"Nine";
                               break;
                               
                    case 10: cout<<"Ten";
                    break;
                    
                    case 11: cout<<"Eleven";
                    break;
                    
                    case 12: cout<<"Twelve";
                    break;
                    
                    case 13: cout<<"Thirteen";
                    break;
                    
                    case 14: cout<<"Fourteen";
                    break;
                    
                    case 15: cout<<"Fifteen";
                    break;
                    
                    case 16: cout<<"Sixteen";
                    break;
                    
                    case 17: cout<<"Seventeen";
                    break;
                    
                    case 18: cout<<"Eighteen";
                    break;
                    
                    case 19: cout<<"Nineteen";
                    break;
                    
                    default: cout<<"Error";
                    break;
             }
    }
    else if((num2.length() == 2) && ((num >= 20) && (num <=99)))
    {
    switch(tens_digit)
    {
                       case 2: cout<<"Twenty";
                       break;
                       
                       case 3: cout<<"Thirty";
                       break;
                       
                       case 4: cout<<"Forty";
                       break;
                       
                       case 5: cout<<"Fifty";
                       break;
                       
                       case 6: cout<<"Sixty";
                       break;
    }
            switch (ones_digit)
		{
			case 0:
				cout << " ";
				break;
			case 1: 
                 cout << "-one";
				break;
			case 2:
				cout << "-two";
				break;
			case 3:
				cout << "-three";
				break;
			case 4:
				cout << "-four";
				break;
			case 5:
				cout << "-five";
				break;
			case 6:
				cout << "-six";
				break;
			case 7:
				cout << "-seven";
				break;
			case 8:
				cout << "-eight";
				break;
			case 9:
				cout << "-nine";
				break;
			default:
				cout << "Error";
       }
    }
    
    cout<<"\n";
    system("Pause");
    return 0;
}
triumphost
Posting Whiz
390 posts since Oct 2009
Reputation Points: 57
Solved Threads: 36
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: