Преобразование числа в слова - PullRequest
0 голосов
/ 27 октября 2018

Я новичок в C ++, и я написал программу для вывода чисел в слова от 0 до 99. Программа работает нормально, за исключением того, что числа от 10-20 дают неправильный вывод.

    #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;
        }
    }

Выход: -

Пожалуйста, введите число от 0-99: 12

Двенадцать два

Ответы [ 4 ]

0 голосов
/ 27 октября 2018
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;
    }
}
0 голосов
/ 27 октября 2018

После первого состояния переключения ваша программа не прекращает выполнение решения:

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;
        }
    }

или

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;
        }
    }
}
0 голосов
/ 27 октября 2018

Вы пропускаете заявление "else" после окончания блока "if".

Если число находится в диапазоне от 10 до 19, вы хотите ввести первый блок с первым переключателем.

Иначе (то есть число не между 10 и 19), вы хотите использовать последние два оператора switch, чтобы разделить число на его цифры.

Ваша проблема в том, что есличисло от 10 до 19, все три оператора switch будут запущены.Первый будет отображаться в «Twelve», второй не будет ничего печатать, поскольку «case 1:» отсутствует, а третий напечатает «Two».

Окружите последние два блока переключателей с помощью

else 
{
    switch(digit_1) {
        //...
    }
    switch(digit_2) {
        //...
    }
}
0 голосов
/ 27 октября 2018

я думаю, что результат правильный.12 находится между 10 и 19, затем cout "Twelve" .digit_1 равен 1, но не включается. Digit_2 равен 2, затем cout "Two". Так что результат "Twelve Two" .

...