作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在实现 shunting-yard algorithm .我无法检测到运算符何时缺少参数。 wikipedia entry在这个主题上非常糟糕,他们的代码也因下面的示例而崩溃。
例如 3 - (5 + )
是不正确的,因为 +
缺少参数。
就在算法到达)
之前,运算符堆栈包含- ( +
,操作数堆栈包含3 5
。然后它去像这样:
+
+
是一个二元运算符8
)压入操作数栈(
,然后继续那么我怎样才能检测到 +
缺少一个参数呢?如果你还更新维基百科,额外的荣誉:-)
最佳答案
对于只有二元运算符的表达式,后缀表达式具有不变性,即在表达式的任何前缀中,操作数的数量 > 运算符的数量,最后,差值正好是一个。
因此,您可以通过维护操作数数量 - 运算符(operator)数量的运行计数来验证 RPN 表达式在调车场每个阶段的有效性。如果它低于 1,或最后变得大于 1,则说明您有错误。
它不会查明错误,但至少让您知道有一个错误。
(注意:我还没有尝试证明上述事实,但看起来它会起作用)
关于c++ - 调车场:缺少运算符(operator)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291992/
我的代码遇到了很大的困难。我正在开发一个显示歌词和和弦的应用程序。我使用两个重叠的textview分隔了和弦和歌词。 我在这个项目中遇到的问题是音高改变功能。我尽我所能向我解释得更好: 和弦总数为12
我有一个游戏并使用 Tune 作为分析库。使用最新的 Unity (5.3.4f1) 并通过 Unity 获取 apk(无 eclipse/android studio)。 我的游戏在 Play 商店
我是一名优秀的程序员,十分优秀!