3

2 つの代数式が等しいかどうかをテストするプログラムを作成する必要があります。MDAS の優先順位と括弧のグループ化に従う必要があります。優先順位に関する問題を解決するには、これらの式に対して Infix to Postfix Notation コンバーターを実装する必要があると考えています。しかし、これを行うことによって、それらの同等性を結論付けることはできませんでした.

プログラムは次のようになります: ユーザー入力: a*(a+b) = a*a + a*b 出力: 等価

この問題では、Computer Algebraic Systems や外部ライブラリを使用することは許可されていません。実際のコードがある場合は投稿しないでください。この問題を解決するためのアイデアが必要です。

4

2 に答える 2

1

式の評価が許可されていない場合は、それらを式ツリーに解析する必要があります。

その後、すべてのメンバーを乗算/除算してすべての括弧を取り除き、a(b - c) が a*b - a*c になるようにします。

次に、すべての式を文字列に変換し、すべてのメンバーがアルファベット順に (b*a ではなく a*b) ソートされていることを確認し、すべてのスペースを削除して文字列を比較します。

于 2013-06-29T12:59:15.127 に答える
1

それはアイデアです。最初に式ツリー
の 構築を実装する必要があります。これは、式の非常に自然な表現だからです。 次に、連想または分配代数プロパティを使用して、開き括弧などで単純化する必要があるかもしれません。 次に、ツリーを比較する必要があります。交換演算などですべての分岐順列を処理する必要があるため、明らかではありません。たとえば、それらを並べ替えて (分岐を意味します)、等しいかどうかを比較できます。また、パラメータの名前が変更される可能性があることに注意する必要があります。つまり、a + b は x + y に等しい必要があります。

于 2013-06-29T12:47:23.037 に答える