问题标签 [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 投票
2 回答
167 浏览

f# - 如何在数学表达式求值器中修复此错误

我在 F# 中为简单的数学表达式(带有一些自定义函数的算术)编写了一个典型的求值器。虽然它似乎工作正常,但某些表达式的计算结果不如预期,例如,这些工作正常:

  • 评估 "5+2" --> 7
  • 评估 "sqrt(25)^2" --> 25
  • eval "1/(sqrt(4))" --> 0.5
  • 评估 "1/(2^2+2)" --> 1/6 ~ 0.1666...

但这些不:

  • eval "1/(sqrt(4)+2)" --> 计算结果为 1/sqrt(6) ~ 0.408...
  • eval "1/(sqrt 4 + 2)" --> 也将计算为 1/sqrt(6)
  • eval "1/(-1+3)" --> 计算结果为 1/(-4) ~ -0.25

代码的工作方式如下,标记化(字符串作为输入)-> 到 rev-polish-notation (RPN) -> evalRpn

我认为问题似乎发生在一元函数(接受一个运算符的函数)的某个地方,这些是 sqrt 函数和否定 (-) 函数。我真的看不出我的代码出了什么问题。有人可以指出我在这里缺少什么吗?

这是我在 F# 中的实现

0 投票
2 回答
60 浏览

java - 模式未按要求拆分,无法按 + 拆分

我有以下代码:

编译的模式经过了多次迭代,在当前迭代中,它添加到列表中:

它应该由所有操作拆分并将操作保留在拆分字符串中,因此我希望得到以下输出:

当它只找到一个运算符而不是一个数字时,它看起来并没有分裂。

所以基本上我想要当前的行为以及它拆分运算符,这样如果它连续找到 2 个运算符,它将它们拆分。使得以下内容:

等于

0 投票
1 回答
78 浏览

c - 为什么在第一个代码中它不起作用但在第二个代码中起作用?- 反向波兰表示法

我尝试仅使用数字来评估后缀表达式,因此在理解了概念并实施了代码之后,我认为这是正确的,它没有生成正确的答案,但是在我进行了一些更改后它起作用了,但是在这里我想知道我第一次犯了什么错误,所以我以后不能重蹈覆辙!

这是两个代码(第一个错误,第二个正确)

正确的代码

为了测试程序,我们需要输入一个反向波兰表示法的表达式,就像32*1+中缀表示法一样,3*2+1所以我们会得到一个正确的答案7

0 投票
1 回答
85 浏览

c - 反向波兰转换器

我正在尝试制作一台可以执行以下操作的反向波兰打印机-

输入:

  1. (a+(b*c))
  2. ((a+b)*(z+x))
  3. ((a+t)*((b+(a+c))^(c+d)))

输出:

  1. abc*+
  2. ab+zx+*
  3. at+bac++cd+^*

这是我的代码:

但它甚至没有正确输入,我无法弄清楚这段代码中有什么错误。请帮助找出问题所在。

0 投票
2 回答
1006 浏览

c# - 数组元素的逆波兰表示法。(例如:array_name[i,j])

我需要将 array_name[i, i*k, ik] 之类的表达式转换为反向波兰表示法。我基本上在做的是尝试将这样的表达式翻译: if(array_name[i, j+k]>=a+b) array_name[i, j*k] = a+2; else x = a / b; 使用正则表达式转换为 RPN。我已经有一个非常丑陋的巨大正则表达式,它匹配:if, else, + - * / = == ( ) <= >= < > !=以及匹配此模式的所有单词:[a-zA-z][a-zA-z0-9_]*。而且我还有将中缀算术表达式转换为 RPN 的代码。这里是:

如何修改代码以使该方法public static string Translate(string input)将简单的表达式(如 array_name[i,k*i-1])转换为 RPN 表达式?

请注意,该public static string Translate(string input)方法仅适用于简单的算术表达式,但不适用于我上面提供的那个(if-else 语句)。

0 投票
2 回答
165 浏览

java - RPN表达式java中元素之间的空格

我有一个方法getRPNString(),它返回反向波兰表示法字符串。我想用空格键分割这个字符串来计算它。现在我无法理解如何在我的 RNP 字符串中添加空格键,因为它不适用于两位数字。

}

我试图在我的 StringBuilder 变量中通过 append(' ') 添加空格键。但是两位数是不对的。我想我完全不明白怎么做。

例如,如果输入是字符串 in = "((5+3*(4+2)*12)+3)/(1+3)+5"; 输出将是5342+ 12 +3+13+/5+,当我在所有调用中添加空格键时out.append(' ')**out 是 **5 3 4 2 + * 1 2 * + 3 + 1 3 + / 5 +,所以像“12”这样的数字变成了“1 2”。你能帮我吗?

0 投票
1 回答
967 浏览

r - R中逆波兰符号的评估

在 R 中评估 RPN 符号的最有效算法是什么?

这是一个问题:假设我们有

如何编写一个评估任何输入 RPN 的通用函数?

R有堆栈数据结构吗?

感谢您的提示

0 投票
1 回答
172 浏览

java - RPN PostFix Calculator 输出不像简单算术所期望的那样

我编写了一个类来对基本算术运算符进行后修复计算 - 代码如下。

我相信我的Stack课程可以正常工作,但如有必要,我也可以发布。

我的计算器的输出与预期的不一样,例如输入53+评估为392*评估为2,而我分别期待818

0 投票
1 回答
1814 浏览

c - 反向波兰符号的中缀

我正在编写将中缀表达式转换为反向表示法的代码,但我的程序在执行文件时崩溃

传递数组及其大小作为参数

在找出“)”时返回弹出的运算符

0 投票
1 回答
884 浏览

string - Haskell 中的逆波兰表示法

我需要编写一个函数,该函数采用算术表达式并使用 Haskell 将其转换为逆波兰表示法的字符串。创建一个函数来评估 RPN 表达式非常容易,无需担心,只是从算术到 RPN 的转换令人不安。