要求以3*(5-2)+7 3*(5-2)+7 对应的后缀表达式为: 3.5.2.-*7.+@ 3.5.2.-*7.+@。在该式中,@ 为表达式的结束符号。. 为操作数的结束符号。为例,用c++写出代码
时间: 2024-05-13 13:19:43 浏览: 88
以下是用 C++ 实现计算后缀表达式的代码:
```cpp
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int calculate(string postfix) {
stack<int> operands;
for (int i = 0; i < postfix.size(); i++) {
char ch = postfix[i];
if (ch == '.') {
continue;
} else if (ch == '+' || ch == '-' || ch == '*' || ch == '/') {
int op2 = operands.top();
operands.pop();
int op1 = operands.top();
operands.pop();
switch (ch) {
case '+':
operands.push(op1 + op2);
break;
case '-':
operands.push(op1 - op2);
break;
case '*':
operands.push(op1 * op2);
break;
case '/':
operands.push(op1 / op2);
break;
}
} else {
int num = 0;
while (i < postfix.size() && postfix[i] != '.') {
num = num * 10 + (postfix[i] - '0');
i++;
}
operands.push(num);
}
}
return operands.top();
}
int main() {
string postfix = "3.5.2.-*7.+@";
int result = calculate(postfix);
cout << result << endl;
return 0;
}
```
输出结果为 16,表示表达式的计算结果为 16。
阅读全文