いくつかの研究をした後、私は後置記法と式を解析する方法について学びました。sin、cos、およびその他の関数を使って式を評価するにはどうすればよいですか?
私のコードは、後置記号に変換され、スタックベースの方法を使って評価されます。たとえば:5 + sin (2 + log (2))
:
Initial expression: 5 + 2^(4 - 1)
Postfix notation: 5 2 4 1 -^+
Result: 13
は、今私は機能を持つ式を評価できるようにするには、このプログラムを拡大しようとしています、罪のように、COS、例えば、ログインします。 私の最初のアイデアは、解析する前に、これらの関数を見つけてその結果を評価し、文字列に置き換えることでした。しかし、私はそれが非常に良いアイデアだとは思わない...
私は効率的な方法でこれを行うことができますか?
C#で書かれたコードです。http://pastebin.com/7wB81fyQですが、私は筆者が理解しやすいように擬似コードを好むでしょう...私はそれらの人ではありませんコピー&ペーストするだけです。
機能(たとえば、「sin」、「cos」など)は、**プレフィックス**表記です。別の解析ルールを適用するだけです。 –
これはShunting-Yardアルゴリズムで説明されています。http://en.wikipedia.org/wiki/Shunting-yard_algorithm – RBarryYoung
@RBarryYoungありがとう、私はこのアルゴリズムを試してみます。 – Tibi