问题标签 [rpn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
114 浏览

c++ - 关于运行良好的堆栈 RPN 程序上的 char/int

在以下网站中:http: //blockofcodes.blogspot.com/2014/08/postfix-evaluation-using-cpp-stack.html

如果我输入像 1.62 3.5 + 2.7 * 这样的值,则返回值不是十进制值。

我将 int 更改为 double ,但它仍然给我一个错误。谁能给我一个意见?

谢谢!

}

0 投票
1 回答
56 浏览

c - 验证 PN 表达式

如何检查正确的 PN 表达式?

0 投票
1 回答
104 浏览

c++ - RPN 计算器(将操作数应用于堆栈的问题)

我目前正在为一个必须通过一堆整数和各种函数运行的类构建 RPN 计算器。它还必须通过 cin 语句获取输入,然后将其排序为整数或操作数,然后将其压入堆栈或从类中启动适当的函数以进行计算。

其中大部分我已经弄清楚并正在工作,但是我遇到了一个我无法弄清楚的非常奇怪的问题。

它将采用我的第一组数字和第一个操作数(例如,我输入 1 2 3 并且堆栈将显示 3、2、1 作为内容)但是在我应用第二个操作数之后,我得到了零在每个答案之前。

例子:

输入:1 2 + 2 *

预期产出:6

我得到了什么:0、2、0、3

我不确定这是否是堆栈、main 或其他地方的 push() 函数中的错误。我一直没能找到它。任何帮助将不胜感激,即使只是朝着正确方向的一点!

这是我假设在某处导致问题的代码部分:

主功能:

Push、Pop 和 Top 运算符:

而且,以防我实际上在这里做错了......这是我的一个操作函数(+),其他的都是类似的编码。

谢谢!

0 投票
3 回答
652 浏览

perl - 使用单个变量的逆波兰表示法

我已经编写了可以对输入字符串执行以下转换的代码

但现在,我有点坚持最后一个。我知道如何在不涉及 X 的情况下编写代码来解决 RPN。但是,我不确定如何使用所涉及的 x 来解析它。

EIDT:我已经修复了不正确的 RPN 错误,现在显示为

0 投票
0 回答
203 浏览

c - RPN 计算器程序出现错误 C

我正在创建一个反向波兰符号计算器,它还可以做一些其他的事情argv[]来输入选项。但是现在,我只有 RPN 计算器选项,我遇到了一个奇怪的错误,我需要帮助。

我收到错误消息:

这是我的代码:

0 投票
0 回答
78 浏览

c - 制作一个涉及将后缀转换为中缀的 RPN 程序。坚持尝试构建二叉搜索树

所以基本上我试图解决这部分问题的方法是使用bst。我相信 bst 是解决此问题的最佳方法,因为一旦它在树中,您就可以从底部开始,然后从左侧、顶部和右侧开始,然后生成一个中缀表达式。例如,如果你取rpn表达式“5 4 +”并从末尾开始,“+”是树的根,左右节点分别是5和4。然后,从左边到顶部和右侧你得到 5 + 4。规范是,对于更大的表达式,我也必须正确地将所有内容括起来;“5 4 + 3 * 2 /”必须变成“((5 + 5) * 3) / 2”。

我的中缀函数现在只是以线性形式打印出树。显然,我尝试构建树的方式有问题,因为“1 5 A”被打印为“A 5 5”。实际上,无论我输入什么,它只会打印出三件事告诉我它唯一最多存储三件东西。无论如何,我觉得程序状态不好,而且我对 C 很烂,任何帮助都将不胜感激。可能有一些明显的错误,但我的大脑太油腻了,无法注意到任何一个。我的其他大学课程让我很难专注于编程。

0 投票
1 回答
56 浏览

c - 由于它们是字符串,我将如何添加值?

我已经尝试过使用atoi然后将它们切换回字符串来推送,我正在尝试为类制作一个 rpn 计算器,因此推送、弹出、查找和堆栈结构是需要的,但我无法让它添加整数价值观。

如果您发现任何其他问题都很好,这就是我到目前为止所拥有的一切,但我真正想知道的是如何使用此数据结构评估后缀方程输入示例为 -e 2 2 A 5 X。

0 投票
1 回答
1217 浏览

c - 尝试使用一堆字符串将反向波兰表示法转换为中缀,遇到一个小错误,我不知道是什么原因造成的

我已经实现了一个字符串堆栈,我正在尝试使用它将 rpn 转换为中缀。这是中缀函数工作时堆栈的外观,例如,如果我输入2 3 + 5 - 8 *

可悲的是,这不是该程序为我工作的方式,我认为它是技术性的,而不是我的算法。输入“2 5 A”时,它起作用,结果为“(2+5)”。尝试“40 50 A”,我得到“(40+50)”。但是,当尝试“50 100 A”时,我得到“(+)”。像“1 2 A 3 S”这样较长的表达式也只给了我“(-)”。我似乎无法弄清楚是什么原因造成的。请随时试一试。这是我的代码:

编辑:这是程序行为的更多示例

0 投票
1 回答
1409 浏览

c - 从抽象语法树评估表达式

我有一个由反向波兰符号表达式制作的抽象语法树。树的节点都是字符串。

这是我到目前为止的代码。对于评估功能,我考虑过使用这个:

但我认为这不会起作用,因为我使用的是字符串而不是整数。我可以对我的评估功能进行哪些更改?

编辑:我注意到我发布的代码有点乱。我已经把它清理干净了,所以看起来好多了。

编辑2:

我已经尝试摆脱 switch 语句,但现在我得到了核心转储。这只是我想尝试的。我宁愿修复我以前的评估功能

0 投票
1 回答
709 浏览

c++ - C++程序陷入循环

所以这个程序应该接受一个字符串并将其转换为逆波兰表示法,然后为其生成汇编代码。

例如。如果我输入“x = y”,程序将返回

“RPN:xy=”

“代码:1 lod y 2 sto x”

然而,该程序反而返回乱码并继续这样做,直到它耗尽内存。

这是输入函数

这些是与它一起工作的功能。

我猜循环有问题,但我不确定是什么。我已经对它们进行了一段时间的调整,而我所能做的就是让它重复 Hp?而不是一遍又一遍的硬件。