1

ブール式を解くプログラムを書く必要があります。

「1+0*(1*0)」のような文字列があります。

この式の結果を取得するにはどうすればよいですか?

Shunting-yard アルゴリズムアルゴリズムを使用して postfix に変更し、解決することを考えていますが、必要かどうかはわかりません。これを行う方法についてのアイデアは高く評価されます。

4

1 に答える 1

1

方程式が既に後置表記になっている場合は、Shunting-Yard アルゴリズムを使用せずに解くことができます。たとえば、上記1+0*(1*0)は になります1 0 1 0 * * +。演算子に到達するまで要素をスタックにプッシュし、次に 2 つの要素をポップし、結果を評価してスタックにプッシュします。

この例では1、 、01、および0get がスタックにプッシュされます。次に*、スタックをポップさ0せ、次に1. 結果は0です。これはスタックにプッシュされ、スタックには1, 0, 0(下から上への順序) が含まれるようになりました。とがスタックから*ポップ00れ、結果として がスタックに0プッシュバックされます。最後に、スタックから+ポップ00て、スタックを空のままにし、結果は 0 になります。

ほぼすべての CPU にスタックが組み込まれているため、これは非常に簡単にアセンブリに実装できます。文字列から文字を読み取って、上記の手順に従います。オペランド/演算子はそれぞれ 1 文字より長くないため、単語の解析について心配する必要はありません。

于 2013-06-23T23:43:14.957 に答える