Pixel666
Pixel666

Reputation: 37

Converting Number into Words

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

Answers (4)

Coral Kashri
Coral Kashri

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

&#214;mer
&#214;mer

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

Karlinde
Karlinde

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

Jun yao
Jun yao

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

Related Questions