Javascript Postfix表示法

时间:2012-09-27 14:31:14

标签: javascript postfix-notation

我想帮助在后缀表示法中使用以下表达式,“4 5.2 + 5.7 / 6.1 5--”。

首先,它必须读取表达式,然后测试运算符然后测试操作数,然后计算表达式。最后,“document.write”每次推送和弹出分开的行。请帮忙,因为我已经没有地方可以从YouTube浏览到这个网站了。我甚至不知道从哪里开始这么一个非常简单的例子来帮助我开始会有所帮助。我有一些JS知识,但没有精通它,我可以在其他地方找到这个特定的例子。

1 个答案:

答案 0 :(得分:0)

考虑将问题分解为更简单的步骤。例如,您给出的原始问题陈述,用于评估字符串

4 5.2 + 5.7 / 6.1 5 - -

很难一下子完成所有工作。最好将问题分解为可管理的部分。一个分解是:

  1. 将字符串分解为标记。

  2. 开发一个适用于令牌的解释器。

  3. 这种分解是解决这些问题的标准方法。像PLAI这样的书涵盖了如何做第2部分。第2部分并不困难:保持一堆数字。当你走动代币时:

    1. 如果您看到一个数字,请将其推入堆栈。

    2. 如果你看到一个操作员,从堆栈中弹出两个数字,用操作员操纵它们,然后将结果推回堆栈。

    3. 此过程是反向波兰表示法(RPN)计算器的核心。

      如果您愿意使用正则表达式等工具,第一个问题也不会太困难。正则表达式可以检测字符串中的模式并将字符串分成多个部分。例如,以下示例显示了我们如何将字符串拆分为沿空间边界的单词序列:

      var s = "hello this is a test";
      var pieces = s.split(" ");
      

      出于您的目的,您的字符串并不总是很好地间隔开,因此您需要沿数字和运算符边界分割。您需要尝试使用regular expression patterns来使标记化按您希望的方式工作。


      您尝试解决的问题实际上不是初学者材料。问题是给计算机科学的第二学期学生,那些已经经历了How to Design Programs或其他类似课程的人,假设学生已经知道他们最喜欢的编程语言 cold < / strong>即可。如果您在没有复制和粘贴其他人的示例的情况下无法编写程序,那么您还没有背景来解决问题。先做一些简单的问题,把语言拿到手指上,然后再回过头来看。