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;
}
Ваша проблема заключается в сохранении ввода в char
.
Поскольку вы храните day
как символ, он достаточно велик, чтобы хранить первый символ того, что вводится. Когда вы вводите 1
(или 2
, или 3
и т.д.), Что хорошо, так как есть только один символ ввода. Когда вы вводите число с более чем одной цифрой, можно сохранить только первый символ - например, если вы введете 10
, тогда будет только место для хранения 1
.
Чтобы исправить это, вы должны использовать более подходящий тип данных для day
. Использование int
или что-то подобное, вероятно, лучше всего, так как это даст вам достаточно места для больших значений. Итак, другими словами, измените char day;
до int day;
,
Если вы это сделаете, вам нужно будет изменить значения в операторах case
для соответствия - поскольку вы больше не сравниваете символы, вам также необходимо изменить их на ints (например, изменить '0'
на 0
),
Вы сохраняете только один символ в переменной 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;
}
Когда вы пишете
char day;
cin>>day;
Он будет принимать только один символ от ввода. Вы должны объявить день целым, и ваша проблема будет решена.
Вы должны быть очень осторожны, когда вы решаете тип данных переменной, поскольку каждый тип данных имеет свои неотъемлемые свойства. Как все указывали здесь, вам нужно изменить тип данных с 'char' на 'int'.
char day;
cout << " Enter day of the week " << endl;
cin >> day;
Ваш код говорит, чтобы прочитать один символ со стандартного ввода. Если это не то, что вы хотите, измените код.