По умолчанию работает только для 8 и 9. После этого он использует первое число и обрабатывает его как 1,2,3

0

default не работает, за исключением чисел 8 и 9. 10 и выше он использует первое целое число, которое рассматривает его как случай, полностью игнорирующий второе число после него. пожалуйста помоги

#include <iostream> 
#include <string>
using namespace std;

int main ()
{
     char day;
        cout << " Enter day of the week " << endl;
        cin >> day;
        switch (day)
   {  
        case '1' : case '6' : case '7' :
           cout << "weekend";
            break;

    case '2' : case '4' :
        cout << "going to C++ Class";
        break;

    case '3' : case '5' :
        cout << "studying for C++ Class";
        break;

    default :
        cout << "invalid day number";


}


    system("pause");
    return 0;

}

Теги:

5 ответов

1

Ваша проблема заключается в сохранении ввода в char.

Поскольку вы храните day как символ, он достаточно велик, чтобы хранить первый символ того, что вводится. Когда вы вводите 1 (или 2, или 3 и т.д.), Что хорошо, так как есть только один символ ввода. Когда вы вводите число с более чем одной цифрой, можно сохранить только первый символ - например, если вы введете 10, тогда будет только место для хранения 1.

Чтобы исправить это, вы должны использовать более подходящий тип данных для day. Использование int или что-то подобное, вероятно, лучше всего, так как это даст вам достаточно места для больших значений. Итак, другими словами, измените char day; до int day; ,

Если вы это сделаете, вам нужно будет изменить значения в операторах case для соответствия - поскольку вы больше не сравниваете символы, вам также необходимо изменить их на ints (например, изменить '0' на 0),

1

Вы сохраняете только один символ в переменной day потому что он объявлен как char. Измените его на int и измените случаи в операторах switch на значения int.

#include <iostream> 
#include <string>
using namespace std;

int main ()
{
    int day;
    cout << " Enter day of the week " << endl;
    cin >> day;

    switch (day)
    {  
        case 1:
        case 6:
        case 7:
            cout << "weekend";
            break;
        case 2:
        case 4:
            cout << "going to C++ Class";
            break;
        case 3:
        case 5:
            cout << "studying for C++ Class";
            break;
        default :
            cout << "invalid day number";
    }

    system("pause");
    return 0;
}
  • 0
    Огромное спасибо!!! Я бы никогда об этом не подумал. Это сработало ^. ^
1

Когда вы пишете

char day;
cin>>day;

Он будет принимать только один символ от ввода. Вы должны объявить день целым, и ваша проблема будет решена.

  • 0
    да, спасибо за совет, чувак, я чувствую себя так глупо сейчас LOL
0

Вы должны быть очень осторожны, когда вы решаете тип данных переменной, поскольку каждый тип данных имеет свои неотъемлемые свойства. Как все указывали здесь, вам нужно изменить тип данных с 'char' на 'int'.

0
 char day;
    cout << " Enter day of the week " << endl;
    cin >> day;

Ваш код говорит, чтобы прочитать один символ со стандартного ввода. Если это не то, что вы хотите, измените код.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню