0

私は、与えられた入力を解析し、それを中置から後置に変換する比較的ありふれたアルゴリズムを書きました。

私が抱えている問題は、イベントの順序を扱っています。後置操作について何か誤解している可能性があります...

10/(2-4)/5 を計算したいとしましょう: 答えは -1 になるはずですが、得られる答えは -25 です。

10,2,4,-,5,/,/

なんで?私の「接尾辞」は最初に -2/5 を実行し、次に 10/-.4 を除算するため、これは明らかに間違っています:

私が見逃している簡単なものはありますか?

4

1 に答える 1

1

式には、同じレベル (括弧なし) で 2 つの除算演算があります。除算が左から右に関連付けられると仮定すると、式は次のように解釈されます。

(10 / (2 - 4)) / 5

これは、後置表記で次のようになります。

10 2 4 - / 5 /

最終的に得られた接尾辞は、次の順序に対応します。

10 / ((2 - 4) / 5)

解析ツリーが中置式から正しく生成されていると仮定すると、解析ツリーから逆ポーランド語を生成すると問題が解決するはずです。

于 2013-08-11T21:44:08.003 に答える