问题标签 [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.
java - 在我的调车场实施中添加括号处理时遇到问题
我正在实施调车场算法,但在处理括号时遇到了麻烦。不过,它适用于非分组表达式。这是我没有括号检测的情况:
ops 是保存 Operator 对象的堆栈。有两种类型的运算符,函数(+,-,*等)和Parans(“(”,“[”))。您如何为此添加括号处理?每次尝试,我似乎都无法理解正常工作
这是我尝试过的:
我怀疑while循环条件不好,但我不知道有什么合适的替换。它继续到无穷大。这是我拥有的最干净的实现。基本上它应该做的是当它遇到一个左括号时,将它压入堆栈。当它碰到一个闭合的时,将堆栈中的所有内容弹出到输出上,直到它碰到左括号。然后它应该中断,并继续下一个令牌。
编辑:添加了我的尝试
haskell - RPN 计算器实现中的 Haskell 问题
我正在尝试在 Haskell 中实现一个 RPN 计算器。这是Learn You a Haskell中的一个练习。这是我的代码:
该函数solveRPN
首先将字符串拆分为标记。(例如:"4 3 2 + *"
-> ["4","3","2","+","*"]
)然后,一个一个令牌被推入堆栈。如果遇到运算符,则堆栈中的最后两项由运算符处理,然后将产生的值放回堆栈中。当遍历整个列表时,堆栈中只剩下一项,这就是答案。
这里有一些问题:
在
(int $ init accumulator)
我想取消堆栈中的最后两个元素。有什么替代方法(int $ init accumulator)
吗?代码无法通过编译。GHC 说“输入时解析错误(”
在这一行:| token == "/" = pFunction (
div)
。我怀疑问题可能来自pFunction
。它的参数是一个运算符(或者我可以称它为函数吗?)我不确定“函数是否作为参数函数”在 Haskell 中是合法的。这合法吗?还有其他选择吗?我在 GHCi 中做了一些实验,发现了一些奇怪的东西:
为什么加号的类型与(+)的类型不同?
感谢您的关注和耐心。(:
c++ - RPN 评估 C++
您好)这是我从中缀表达式转换为后缀表达式的代码,但是我无法理解如何评估我得到的后缀表达式,我将非常感谢任何提示。我不是要代码,尽管这会有所帮助。
PS我没有任何评论,但我想代码本身是不言自明的))
PPS提前谢谢你。
java - 从 RPN 转换为中缀时无法检测到 2 位数字
我正在尝试实现一个 java 方法,该方法接受 RPN(反向波兰表示法)中的输入,并通过使用堆栈将其转换为中缀表示法并计算它。我已经构建了堆栈和一个工作转换器,但是在接受多个数字(例如 10)时我发现了问题,我解决这个问题的想法是输入由空格分隔的每个单独的实体,将输入 10+20作为“10 20 +”,但这会导致越界错误。如果没有下面标记的部分,程序可以很好地处理诸如“12+”(1+2)和更复杂的等式,只要它们涉及单个数字值。堆栈也具有完整的功能,具有 push 和 pop 方法
这个位不起作用
到这里
c++ - Dijkstra 的 C++ 中的 Shutting Yard 算法
作为我的作业,我必须编写一个程序来计算以字符串形式给出的方程。该程序的一部分是将中缀表达式解析为后缀的函数。这是我的代码:
问题是它适用于除 4/6 等方程之外的所有条件。有任何想法吗?我刚刚进行了请求的更新
c - 带空格分隔符的 strtok() 函数
我正在尝试使用 C 实现 RPN 计算器。以下是代码:
问题是,当在 strtok() 函数中使用逗号或句号作为分隔符时,它可以工作,但使用空格时,它只能读取第一个标记。
有什么帮助吗?
谢谢
c++ - RPN计算器c++问题
我需要创建一个对输入文件进行操作的 RPN 计算器。它使用 4 个标准算术运算符以及 pow 和 %。我不确定为什么以下程序不适用于最后 4 行输入。我得到最后 4 行的“SYNTAX ERROR”输出。有什么想法或建议吗?我正在使用的示例输入 .txt 文件是:
3 4 5.0 * -
7
4 * 8 30 +
香蕉
9 10 + 30 -
- 7 3-+ 2 -3+
900 40.65-20+
45.2 23.999%
10 战俘 2
正确的输出应该是:
-17
7
语法错误
语法错误
-11
9
879.35
21.201
100
c - 没有语句和中断的情况
我正在处理 RPN 计算器,我发现了一些使用switch
其中一些case
没有任何表达式和break
语句的方法:
这是我使用此算法的方法,不幸的是它无法正常工作作为函数的输入,我使用的struct
定义数组如下:
这是 RPN 解析器:
问题主要是为什么 for PLUS
andMULTI
在case
子句中没有简单的语句;
?
如果有人想查看整个代码并且可能会发现这里的错误是整个calculate.c
程序http://pastebin.com/WteqbmJg
c++ - 使用 int 堆栈的 C++ RPN 计算器
我正在尝试编写一个 RPN 计算器,其中这行输入作为一个简单的示例: 2 3 + 将打印: 5 然后结束。
我需要程序获取输入行,将数字放入堆栈,查找非数字,检查它们是否是运算符:'+'、'-'、'/'或'*',如果它们是然后他们计算堆栈上最后两个数字的计算,删除这两个数字,然后将新数字添加到堆栈中。这需要从左到右,解析输入行。此外,如果符号不是运算符之一,则应打印到 cout。
目前,该程序在编译时会将一长串错误代码转储到屏幕上。
这是我所拥有的: