做了一些研究後,我瞭解了後綴表示法以及如何解析表達式。如何用sin,cos和其他函數來評估表達式?
我的代碼轉換爲後綴表示法,然後使用基於堆棧的方法對其進行評估。例如:
Initial expression: 5 + 2^(4 - 1)
Postfix notation: 5 2 4 1 -^+
Result: 13
現在我想擴大這個程序能夠與功能評估表情,像正弦,餘弦,日誌,例如:5 + sin (2 + log (2))
。 我最初的想法是,在解析它之前,找到這些函數,評估它們的結果,並將它替換爲字符串。但我認爲這不是一個好主意......
那麼我該如何以有效的方式來做到這一點?
這裏有一些用c#編寫的代碼,如果它有任何用處:http://pastebin.com/7wB81fyQ,但我更喜歡一些僞代碼,以便我明白我寫得更好......我不是那些只需複製並粘貼即可。
函數(例如'sin','cos'等等)以**前綴**符號表示。您只需要應用不同的分析規則。 – 2012-03-17 17:56:57
這一切都由Shunting-Yard算法解釋,在這裏:http://en.wikipedia.org/wiki/Shunting-yard_algorithm – RBarryYoung 2012-03-17 18:05:21
@RBarryYoung謝謝你,我會試試這個算法。 – Tibi 2012-03-17 18:11:03