ブール式を解くプログラムを書く必要があります。
「1+0*(1*0)」のような文字列があります。
この式の結果を取得するにはどうすればよいですか?
Shunting-yard アルゴリズムアルゴリズムを使用して postfix に変更し、解決することを考えていますが、必要かどうかはわかりません。これを行う方法についてのアイデアは高く評価されます。
ブール式を解くプログラムを書く必要があります。
「1+0*(1*0)」のような文字列があります。
この式の結果を取得するにはどうすればよいですか?
Shunting-yard アルゴリズムアルゴリズムを使用して postfix に変更し、解決することを考えていますが、必要かどうかはわかりません。これを行う方法についてのアイデアは高く評価されます。
方程式が既に後置表記になっている場合は、Shunting-Yard アルゴリズムを使用せずに解くことができます。たとえば、上記1+0*(1*0)は になります1 0 1 0 * * +。演算子に到達するまで要素をスタックにプッシュし、次に 2 つの要素をポップし、結果を評価してスタックにプッシュします。
この例では1、 、0、1、および0get がスタックにプッシュされます。次に*、スタックをポップさ0せ、次に1. 結果は0です。これはスタックにプッシュされ、スタックには1, 0, 0(下から上への順序) が含まれるようになりました。とがスタックから*ポップ0さ0れ、結果として がスタックに0プッシュバックされます。最後に、スタックから+ポップ0し0て、スタックを空のままにし、結果は 0 になります。
ほぼすべての CPU にスタックが組み込まれているため、これは非常に簡単にアセンブリに実装できます。文字列から文字を読み取って、上記の手順に従います。オペランド/演算子はそれぞれ 1 文字より長くないため、単語の解析について心配する必要はありません。