问题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> &notation) {
  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 ++反向波兰语表示法计算器的主要内容,如果未能解决你的问题,请参考以下文章

C语言链表的问题

在 C/C++ 中访问 Java/Python 的动态链接库?

C# lambda 表达式反向 <=

为啥下面的代码会崩溃?

C ++版本突出显示[关闭]

创建 UML 图的 Java 代码