現在我有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