2012-09-27 98 views
-3

我想在postfix表示法中採用以下表達式,例如「4 5.2 + 5.7/6.1 5--」。Javascript後綴表示法

首先,它必須讀取表達式,然後測試運算符,然後測試操作數,然後評估表達式。最後,「document.write」每隔一行推送一遍。請幫忙,因爲我沒有足夠的地方從YouTube上觀看這個網站。我甚至不知道從哪裏開始,所以幫助我開始的一個非常簡單的例子將有所幫助。我有一些JS知識,但並不精通它,我可以在這個特定的例子的別處找到一點幫助。

+0

我在尋找JavaScript幫助我認爲大部分搜索都爲Java提供了幫助。如果我能找到我提到的每一件事的樣本,我肯定我可以把它拼湊成整個事情。 – better

+1

如果您獲得通用的psuedocode解決方案,則可以使用JavaScript輕鬆編寫。您無需編寫完整的JavaScript解決方案。這個鏈接是一個基本的算法,谷歌搜索第五:http://www.smccd.net/accounts/hasson/C++2Notes/ArithmeticParsing.html – Chad

+0

謝謝乍得,但我迄今爲止學到的大部分通過解構其他人的代碼或代碼,這些代碼或代碼是在我特別詢問後編寫的。我在閱讀本網站的開始後認爲,我應該特別要求代碼幫助。我沒有想到「去看看這個其他網頁尋求幫助」的幫助。即Google。我煩了。當我知道如何編寫一個特定的代碼時,我將它與任何需要它的人分享,但很簡單。所以,如果你能幫我寫這個,或者知道某人,那會更有幫助。我不會另外提問。但是,無論如何,謝謝你看起來很酷。 – better

回答

0

考慮將問題分解爲更簡單的步驟。例如,您給出的原始問題陳述,以評估字符串

4 5.2 + 5.7/6.1 5 - - 

太難以一次完成。把問題分解成可管理的部分更好。一個分解是:

  1. 將字符串分解爲標記。

  2. 開發一個可用於令牌的解釋器。

該細分是解決這些問題的標準方法。像PLAI這樣一本書介紹瞭如何做第2部分。第2部分並不難:維護一堆數字。當您漫遊令牌時:

  1. 如果您看到一個數字,請將其推入堆棧。

  2. 如果您看到一個操作符,則從堆棧中彈出兩個數字,用操作員操作它們,然後將結果推回到堆棧上。

此過程是逆波蘭表示法(RPN)計算器的核心。

如果你願意玩類似正則表達式的工具,第一個問題也不是很難。正則表達式可以檢測字符串中的模式並將字符串分割成多個部分例如,下面的例子演示瞭如何我們可以沿着空間邊界的字符串分割成詞序列:

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

你的目的,你的字符串不會總是很好地隔開,所以你需要沿着分裂數字和運算符邊界。您需要使用regular expression patterns進行試驗,以使標記化按照您希望的方式工作。


你試圖解決的問題其實不是初學者材料。問題是給計算機科學的第二學期學生的問題,那些已經經歷過類似How to Design Programs或其他類似課程的人們,假設學生已經知道他們最喜歡的編程語言爲。如果你不能在沒有複製和粘貼其他例子的情況下編寫程序,你還沒有背景來解決問題。先做簡單的問題,把語言放進你的手指,然後回到這個。

+0

謝謝。儘管我是一名初學者,但我同意,但我們的教授說我們必須進行研究,以瞭解如何做到這一點。我也同意小部分的工作。但是,我通過複製和粘貼來自其他程序的部分來完成此操作。我對它看起來並不完全滿意,但它起作用,這對我有好處。我不能分化。我可以發佈我的代碼並查看是否可以看到分區錯誤的位置? – better

+0

沒關係。我現在把它分開了。現在,我需要它使它每次顯示一個邊框「document.writes」 – better