问题C ++反向波兰语表示法计算器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题C ++反向波兰语表示法计算器相关的知识,希望对你有一定的参考价值。
我对RPN有问题。我希望程序在按ENTER键后完成输入字符,但是某些操作不起作用,因为它不会写入vec。我试图解决任务:应该确定以反向波兰语符号记录的表达式的值。该表达式将包含以下运算符:+,-,*和/(整数除法)以及不大于一百万的自然数。结果为int类型。
入口在第一行(也是唯一的一行)中,以波兰语反符号表示的短语。运算符与数字之间用空格分隔。表达式长度小于1000个字符。
退出ONP表达式的结束值。
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int RPN(vector<string> ¬ation) {
stack<int> s;
for (string str : notation) {
if (str == "+" or str == "-" or str == "/" or str == "*") {
int a = s.top();
s.pop();
int b = s.top();
s.pop();
if (str == "-") {
s.push(b - a);
continue;
}
if (str == "+") {
s.push(b + a);
continue;
}
if (str == "/") {
s.push(b / a);
continue;
}
if (str == "*") {
s.push(b * a);
continue;
}
} else
s.push(stoi(str));
}
return s.top();
}
int main() {
vector<string> notation;
while (true) {
string sign;
cin >> sign;
if (cin.get() != 'n') {
break;
} else {
notation.push_back(sign);
}
}
for (auto i : notation) // test, print vec
{
cout << i << endl;
;
}
cout << RPN(notation) << endl;
return 0;
}
以上是关于问题C ++反向波兰语表示法计算器的主要内容,如果未能解决你的问题,请参考以下文章