В этом переключателе, независимо от того, что пользователь вводит, он всегда пропускает все случаи и всегда отображает случай по умолчанию !!
cout << "Enter an operator(+, -, *, /)" << endl;
cin >> oper;
cout << "Enter second number" << endl;
cin >> second;
if (second > 9999)
{
cout << "ERROR\n";
system("PAUSE");
continue;
}
switch (oper)
{
case '+':
ans = add(first, second);
case '-':
ans = subtract(first, second);
case '*':
ans = multiply(first, second);
case '/':
ans = divide(first, second);
default:
cout << "ERROR\n";
system("PAUSE");
continue;
}
Фактически, он не пропускает случаи, он входит в них, а затем выполнение переходит к следующему случаю, в конечном итоге заканчивается в случае по умолчанию. Вам нужно добавить break
заявления выйти из switch
:
switch (oper)
{
case '+':
ans = add(first, second);
break;
case '-':
ans = subtract(first, second);
break;
case '*':
ans = multiply(first, second);
break;
case '/':
ans = divide(first, second);
break;
default:
cout << "ERROR\n";
system("PAUSE");
continue;
}
Прежде всего, вам нужно иметь оператор break
. Случай с переключателем не будет знать, где остановиться, если вы не включите их!
Вы можете исправить код следующим образом:
cout << "Enter an operator(+, -, *, /)" << endl;
cin >> oper;
cout << "Enter second number" << endl;
cin >> second;
if (second > 9999)
{
cout << "ERROR\n";
system("PAUSE");
continue;
}
switch (oper)
{
case '+':
ans = add(first, second);
break;
case '-':
ans = subtract(first, second);
break;
case '*':
ans = multiply(first, second);
break;
case '/':
ans = divide(first, second);
break;
default:
cout << "ERROR\n";
system("PAUSE");
continue;
}
break
. Что вы ожидаете случиться ...?