问题标签 [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 回答
337 浏览

java - 在我的调车场实施中添加括号处理时遇到问题

我正在实施调车场算法,但在处理括号时遇到了麻烦。不过,它适用于非分组表达式。这是我没有括号检测的情况:

ops 是保存 Operator 对象的堆栈。有两种类型的运算符,函数(+,-,*等)和Parans(“(”,“[”))。您如何为此添加括号处理?每次尝试,我似乎都无法理解正常工作

这是我尝试过的:

我怀疑while循环条件不好,但我不知道有什么合适的替换。它继续到无穷大。这是我拥有的最干净的实现。基本上它应该做的是当它遇到一个左括号时,将它压入堆栈。当它碰到一个闭合的时,将堆栈中的所有内容弹出到输出上,直到它碰到左括号。然后它应该中断,并继续下一个令牌。

编辑:添加了我的尝试

0 投票
2 回答
222 浏览

haskell - RPN 计算器实现中的 Haskell 问题

我正在尝试在 Haskell 中实现一个 RPN 计算器。这是Learn You a Haskell中的一个练习。这是我的代码:

该函数solveRPN首先将字符串拆分为标记。(例如:"4 3 2 + *"-> ["4","3","2","+","*"])然后,一个一个令牌被推入堆栈。如果遇到运算符,则堆栈中的最后两项由运算符处理,然后将产生的值放回堆栈中。当遍历整个列表时,堆栈中只剩下一项,这就是答案。

这里有一些问题:

  1. (int $ init accumulator)我想取消堆栈中的最后两个元素。有什么替代方法(int $ init accumulator)吗?

  2. 代码无法通过编译。GHC 说“输入时解析错误(”
    在这一行:| token == "/" = pFunction (div )。我怀疑问题可能来自pFunction。它的参数是一个运算符(或者我可以称它为函数吗?)我不确定“函数是否作为参数函数”在 Haskell 中是合法的。这合法吗?还有其他选择吗?

  3. 我在 GHCi 中做了一些实验,发现了一些奇怪的东西:

为什么加号的类型与(+)的类型不同?

感谢您的关注和耐心。(:

0 投票
1 回答
850 浏览

ruby - Testfirst.org - rpn_calculator - 如何在方法之间传递变量?

我正在努力完成这一课,但我显然错过了一些明显的东西!

除了@numbers,一切都对我的新手来说有效。从评估方法设置@numbers 不会影响其他方法中的@numbers,我真的不明白为什么。我已经尝试了所有可以用谷歌搜索的方法,包括将@numbers 更改为@@numbers,但似乎没有任何帮助。我可以在评估方法中评估字符串......但我已经有了一个很好的加法,我可以使用!

结果是加号返回失败,因为@numbers 为空......

感谢弗兰克施密特,我得到了它的工作。显然,不只是将方法存储在哈希中。

正确的评价方法:

0 投票
1 回答
7088 浏览

c++ - RPN 评估 C++

您好)这是我从中缀表达式转换为后缀表达式的代码,但是我无法理解如何评估我得到的后缀表达式,我将非常感谢任何提示。我不是要代码,尽管这会有所帮助。

PS我没有任何评论,但我想代码本身是不言自明的))
PPS提前谢谢你。

0 投票
1 回答
526 浏览

java - 从 RPN 转换为中缀时无法检测到 2 位数字

我正在尝试实现一个 java 方法,该方法接受 RPN(反向波兰表示法)中的输入,并通过使用堆栈将其转换为中缀表示法并计算它。我已经构建了堆栈和一个工作转换器,但是在接受多个数字(例如 10)时我发现了问题,我解决这个问题的想法是输入由空格分隔的每个单独的实体,将输入 10+20作为“10 20 +”,但这会导致越界错误。如果没有下面标记的部分,程序可以很好地处理诸如“12+”(1+2)和更复杂的等式,只要它们涉及单个数字值。堆栈也具有完整的功能,具有 push 和 pop 方法

这个位不起作用

到这里

0 投票
0 回答
795 浏览

c++ - Dijkstra 的 C++ 中的 Shutting Yard 算法

作为我的作业,我必须编写一个程序来计算以字符串形式给出的方程。该程序的一部分是将中缀表达式解析为后缀的函数。这是我的代码:

问题是它适用于除 4/6 等方程之外的所有条件。有任何想法吗?我刚刚进行了请求的更新

0 投票
1 回答
559 浏览

c - 带空格分隔符的 strtok() 函数

我正在尝试使用 C 实现 RPN 计算器。以下是代码:

问题是,当在 strtok() 函数中使用逗号或句号作为分隔符时,它可以工作,但使用空格时,它只能读取第一个标记。

有什么帮助吗?

谢谢

0 投票
1 回答
658 浏览

c++ - RPN计算器c++问题

我需要创建一个对输入文件进行操作的 RPN 计算器。它使用 4 个标准算术运算符以及 pow 和 %。我不确定为什么以下程序不适用于最后 4 行输入。我得到最后 4 行的“SYNTAX ERROR”输出。有什么想法或建议吗?我正在使用的示例输入 .txt 文件是:

3 4 5.0 * -

7

4 * 8 30 +

香蕉

9 10 + 30 -

  1. 7 3-+ 2 -3+

900 40.65-20+

45.2 23.999%

10 战俘 2

正确的输出应该是:

-17

7

语法错误

语法错误

-11

9

879.35

21.201

100

0 投票
1 回答
90 浏览

c - 没有语句和中断的情况

我正在处理 RPN 计算器,我发现了一些使用switch其中一些case没有任何表达式和break语句的方法:

这是我使用此算法的方法,不幸的是它无法正常工作作为函数的输入,我使用的struct定义数组如下:

这是 RPN 解析器:

问题主要是为什么 for PLUSandMULTIcase子句中没有简单的语句;

如果有人想查看整个代码并且可能会发现这里的错误是整个calculate.c程序http://pastebin.com/WteqbmJg

0 投票
3 回答
1303 浏览

c++ - 使用 int 堆栈的 C++ RPN 计算器

我正在尝试编写一个 RPN 计算器,其中这行输入作为一个简单的示例: 2 3 + 将打印: 5 然后结束。

我需要程序获取输入行,将数字放入堆栈,查找非数字,检查它们是否是运算符:'+'、'-'、'/'或'*',如果它们是然后他们计算堆栈上最后两个数字的计算,删除这两个数字,然后将新数字添加到堆栈中。这需要从左到右,解析输入行。此外,如果符号不是运算符之一,则应打印到 cout。

目前,该程序在编译时会将一长串错误代码转储到屏幕上。

这是我所拥有的: