Reputation: 37
I am a beginner in C++ and I have written a program to print numbers into words from 0 to 99. The program is working fine except, the numbers from 10-20 are giving wrong output.
#include<iostream>
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
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;
}
}
switch(digit_1)
{
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;
}
switch(digit_2)
{
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;
}
}
Output:-
Please enter a number between 0-99: 12
Twelve Two
Upvotes: 0
Views: 873
Reputation: 3506
switch (digit_1) {
case 1:
switch (digit_2) {
case 0: cout << "Ten"; break;
case 1: cout << "Eleven"; break;
case 2: cout << "Twelve"; break;
case 3: cout << "Thirteen"; break;
case 4: cout << "Fourteen"; break;
case 5: cout << "Fifteen"; break;
case 6: cout << "Sixteen"; break;
case 7: cout << "Seventeen"; break;
case 8: cout << "Eighteen"; break;
case 9: cout << "Nineteen"; break;
}
break;
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;
}
if (digit_1 != 1) {
if (digit_1) cout << " ";
switch (digit_2) {
case 0: if (!digit_1) 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;
}
}
Upvotes: 1
Reputation: 59
After first switch state your program does not stop executing solution:
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
case 10: cout<<"Ten"; return 0;
case 11: cout<<"Eleven"; return 0;
case 12: cout<<"Twelve"; return 0;
case 13: cout<<"Thirteen"; return 0;
case 14: cout<<"Fourteen"; return 0;
case 15: cout<<"Fifteen"; return 0;
case 16: cout<<"Sixteen"; return 0;
case 17: cout<<"Seventeen"; return 0;
case 18: cout<<"Eighteen"; return 0;
case 19: cout<<"Nineteen"; return 0;
}
}
switch(digit_1)
{
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;
}
switch(digit_2)
{
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;
}
}
or
using namespace std;
main()
{
int number,digit_1,digit_2;
cout<<"Please enter a number between 0-99: ";
cin >> number;
digit_1=number/10;
digit_2=number%10;
if(number>=10 && number<=19)
{
switch(number)
{
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;
}
}
else {
switch(digit_1)
{
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;
}
switch(digit_2)
{
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;
}
}
}
Upvotes: 0
Reputation: 136
You are missing an "else"-statement after the end of the "if"-block.
If the number is between 10 and 19, you want to enter the first block with the first switch.
Else, (that is, the number is not between 10 and 19) you want to use the last two switch statements to divide the number into its digits.
Your problem is that if the number is between 10 and 19 right now, all three switch statements will be run. The first one will land in "Twelve", the second will not print anything since there is no "case 1:", and the third will print "Two".
Surround the last two switch blocks with
else
{
switch(digit_1) {
//...
}
switch(digit_2) {
//...
}
}
Upvotes: 1
Reputation: 1
i think the result is right.12 is between 10 and 19,then cout "Twelve".digit_1 is 1,but not be included.digit_2 is 2,then cout "Two".So the result is "Twelve Two".
Upvotes: -1