我知道这不是在HW上寻求帮助的地方,但它今晚到期,我认为我做了80%的实验室。
编写一个程序,它将作为一个简单的四功能计算器。那就是它会读取一个数字,读取一个操作符,读取另一个数字,然后进行操作。计算器使用整数并使用四个函数:+, - ,*和/。第一个操作完成后,程序将读取另一个操作员并使用前一个操作的结果作为下一个操作的第一个值。如果用户输入C,则清除结果,然后用户开始输入新号码。如果用户输入X,则计算器将关闭。各种输入值(即数字,运算符,命令)将跟随ENTER键。您的程序应该提示用户该用户要做什么。可以输入命令C和X来代替操作员。
我检查数字是否为数字的部分由教授提供给我们,他只是说复制并使用它而不解释太多。
我的错误是: 1.当我输入第一个号码后按“c”时,我不知道如何重新启动它。 2.按'c'后,它只询问我第二个数字,无论我输入什么,它都会打印最后一个else语句。 3.此外,我不知道如何将最终答案放回Num1。
#include <iostream>
using namespace std;
#include <ctype.h>
int main()
{
char Digit1, Digit2;
bool FirstNum, SecondNum;
bool NegativeNum1, NegativeNum2;
int Num1, Num2;
char Op;
bool ValidNum1, ValidNum2;
bool ValidOp = true;
bool clear = false;
clear = true;
do {
cout << "Enter the first number " << endl;
FirstNum = true;
NegativeNum1 = false;
Num1 = 0;
ValidNum1 = true;
while ((Digit1 = cin.get()) != '\n')
{
if ((Digit1 == '-') && FirstNum)
NegativeNum1 = true;
else
if (isdigit(Digit1))
Num1 = (Num1 * 10) + (Digit1 - '0');
else
ValidNum1 = false;
FirstNum = false;
}
if (!ValidNum1)
cout << "Not valid, try again" << endl;
else;
} while (!ValidNum1);
if (NegativeNum1)
Num1 = -Num1;
else;
cout << "Finished with number " << Num1 << endl;
do {
cout << "Enter an operator, press 'c' to clear or 'x' to exit. " << endl;
cin >> Op;
switch (Op)
{
case 'c':
case 'C':
system("cls");
break;
case 'x':
case 'X':
return 0;
break;
case '+':
clear = false;
break;
case '-':
clear = false;
break;
case '*':
clear = false;
break;
case '/':
clear = false;
break;
default:
ValidOp = false;
cout << "Not valid, please enter '+', '-', '*', '/', 'c' or 'x' as an operator." << endl;
}
} while (!ValidOp);
cin.ignore(); // skip the enter key that is on the keyboard
do {
cout << "Enter the second number " << endl;
SecondNum = true;
NegativeNum2 = false;
Num2 = 0;
ValidNum2 = true;
while ((Digit2 = cin.get()) != '\n')
{
if ((Digit2 == '-') && SecondNum)
NegativeNum2 = true;
else
if (isdigit(Digit2))
Num2 = (Num2 * 10) + (Digit2 - '0');
else
ValidNum2 = false;
SecondNum = false;
}
if (!ValidNum2)
cout << "Not valid, try again" << endl;
else;
} while (!ValidNum2);
if (NegativeNum2)
Num2 = -Num2;
else;
cout << "Finished with number " << Num2 << endl;
if (Op == '+')
{
cout << Num1 << " + " << Num2 << " = " << Num1 + Num2 << endl;
}
else
{
if (Op == '-')
{
cout << Num1 << " - " << Num2 << " = " << Num1 - Num2 << endl;
}
else
{
if (Op == '*')
{
cout << Num1 << " * " << Num2 << " = " << Num1 * Num2 << endl;
}
else
{
if (Op == '/' && Num2 != 0)
{
cout << Num1 << " / " << Num2 << " = " << Num1 / Num2 << endl;
}
else
{
cout << "Cannot perform this operation. Denominator cannot be 0" << endl;
}
}
}
}
system("pause");
}