3

まず、私の下手な英語で申し訳ありません。

アルゴリズムとデータ構造クラスの最後のプロジェクトでは、C++ で単純な数式ソルバーを作成する必要があります。のような単純な式を解く必要があります3*12+(4-6)。式を分割し、演算子を数値から分離することはできましたが、それ以上先に進むことはできません。トリックは、演算子を二分木に配置することですが、私はそれを行うことができませんでした。

プログラムは、デフォルトの C++ ライブラリのみを使用する必要があります。たぶん、私が構築できるいくつかの基本的な実装がありますか?

前もって感謝します。

4

3 に答える 3

0

Look at this http://www.codeproject.com/KB/recipes/rwformulaparser.aspx I think this project will solve your problem Josemi

于 2012-06-24T09:17:29.273 に答える
0

逆ポーランド記法に変換する必要があります。変換のアルゴリズムは少し複雑ですが、多くの Web サイトで正確な手順が詳しく説明されています。複数桁の数字を使用すると、少し複雑になります。

知っておくべき最も重要なことは、RPN ではバイナリ ツリーではなくスタックを使用する必要があるということです。方程式が RPN に切り替えられると、演算子に遭遇するまでその数値をスタックに空にします。演算子では、スタックから上位 2 つの数値を取得し、それらに対して演算を実行し、その最終値をスタックに戻します。 . 最終的に、スタックに 1 つの数字が残り、それが方程式の答えになります。

于 2012-10-05T21:31:13.273 に答える
0

二分木のことはしばらく忘れてください。

式を逆ポーランド記法に変換する必要があります。その変換中に、バイナリ ツリーを構築しています。

【逆磨き表記】【2】

于 2012-06-22T19:49:16.067 に答える