现在我有while循环工作,但现在它循环的第一个操作的答案,而不是要求输入另一个数字更多操作和当我按x退出它不会退出。我只是想知道在哪里把代码行要求输入另一组数字。然后对于输入Y或X是继续,x退出,我可以为此输入代码行。我只需要知道在哪里所有的感谢:)我不能循环工作,当我按下按钮退出我的开关它不起作用
#include <iostream>
using namespace std;
char op, x, y;
double scanNumber() {
double d;
cin >> d;
return d;
}
bool readOperator(string s, char &operation) {
char c;
cout << "\nEnter Operator: ";
cin >> c;
if (s.find(c) != -1) {
operation = c;
return true;
}
return false;
}
double add(double d1, double d2) {
return d1 + d2;
}
double sub(double d1, double d2) {
return d1 - d2;
}
double mul(double d1, double d2) {
return d1*d2;
}
double division(double d1, double d2) {
return d1/d2;
}
int main()
{
double d1, d2;
cout << "Enter 1st Number: ";
d1 = scanNumber();
cout << "Enter 2nd Number: ";
d2 = scanNumber();
char operation;
while (!readOperator("+-*/", operation)) {
cout << "Invalid Operator Please Pick Another One" << endl;
}
bool valid;
double result;
do{
switch (operation)
{
case '+':
result = add(d1, d2);
break;
case '-':
result = sub(d1, d2);
break;
case '*':
result = mul(d1, d2);
break;
case '/':
if (d2 == 0) {
cout << "For division, 2nd operator can't be 0." << endl;
}
else {
result = division(d1, d2);
}
break;
case 'c':
cout << "Clearing the Calculator " << endl;
valid = false;
break;
case 'x':
exit(0);
default:
cout << "invalid input";
}
cout << "\nResult: " << result << endl;
cout << "\nDo another?(Enter 'y'for yes or 'x' to exit) ";
cin >> y, x;
}while (op != 'x');
return 0;
}
要么使用'函数getline()'来阅读你的投入,或使用'CIN .ignore()'在读取'operation'后跳过输入流中留下的换行符。 – Barmar
“return”语句后面的任何代码都不会被执行。执行将在执行下一个语句之前离开函数。 –
没有什么能检查'ch'是'y'还是'x'。 – Barmar