用c++模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算
时间: 2024-09-13 20:07:44 浏览: 51
在C++中,我们可以创建一个简单的计算器类Calculator,它包含私有变量来存储操作数和一个运算栈。这个类将提供四个成员函数,分别对应加、减、乘、除操作。由于运算符优先级相等,我们将采用逆波兰表示法(RPN,也叫后缀表达式),这样可以避免括号的复杂处理。
```cpp
#include <iostream>
#include <stack>
using namespace std;
class Calculator {
private:
int num1, num2; // 存储两个操作数
stack<int> opStack; // 运算栈
public:
void push(int n) { // 入栈操作数
opStack.push(n);
}
void performOp(char op) { // 根据运算符执行相应操作
switch (op) {
case '+':
num2 = opStack.top(); // 取出栈顶元素
opStack.pop();
num1 += num2;
opStack.push(num1); // 结果入栈
break;
case '-':
case '*':
case '/': // 类似地处理减、乘、除
num2 = opStack.top();
opStack.pop();
// ...按照相应的运算法则计算...
break;
}
}
int getResult() { // 获取最终结果
return opStack.top();
}
};
int main() {
Calculator calc;
// 输入操作数和运算符,比如:calc.push(5), calc.push(3), calc.performOp('+');
// 使用完后调用getResult()获取结果
return 0;
}
```
在`main`函数中,你可以通过构建`Calculator`实例并调用其方法来模拟输入运算序列。例如,先推入两个数字,然后选择一个运算符执行,并不断循环直到所有的运算都被完成。最后,`getResult()`函数会返回计算的结果。
阅读全文