C++で文字列として表されるブール式を評価します
この問題では、ブール式を表す文字列expが与えられます。私たちのタスクは、文字列として表されるブール式を評価することです。
式の有効な文字は-
です。
ブール値を示す0または1
&AND操作を示す
| OR操作を示します
^XOR演算を示します
この式を解いて結果を返す必要があります。
問題を理解するために例を見てみましょう
入力: str =1&1 | 0 ^ 1 ^ 0&1
出力: 0
説明:
1&1 | 0 ^ 1 ^ 0&1
1 AND 1 OR 0 XOR 1 XOR 0 AND 1
1 OR 0 XOR 1 XOR 0 AND 1
1 XOR 1XOR0および1
0XOR0および1
0および1
0
ソリューションアプローチ:
簡単な解決策は、現在の値を確認してから、操作を1つずつ実行することです。このために、文字列の3-3文字を検討し、その結果を返します。
ソリューションの動作を説明するプログラム
例
#include <iostream> using namespace std; int andOperation(int a, int b){ return a & b; } int orOperation(int a, int b){ return a | b; } int xorOperation(int a, int b){ return a^b; } char solveExpression(string s) { int n = s.length(); for (int i = 0; i < n; i += 2) { if (s[i + 1] == '&') { s[i + 2] = andOperation(s[i], s[i + 2]); } else if (s[i + 1] == '+') { s[i + 2] = orOperation(s[i], s[i + 2]); } else { s[i + 2] = xorOperation(s[i], s[i + 2]); } } return s[n - 1] ; } int main() { string expr = "0^1+0+1&1"; cout<<"The result of expression "<<expr<<" is "<<solveExpression(expr); return 0; }
出力-
The result of expression 0^1+0+1&1 is 1
-
C++で三項式を評価するプログラム
三項式を保持する式があるとすると、式の結果を評価する必要があります。 TrueとFalseのTとF、および「?」などのいくつかの値をサポートします。および「:」文字。いくつかのプロパティがあります: 指定された文字列の長さは10000以下である必要があります。 条件式は右から左にグループ化します。 条件は常にTまたはFのいずれかになります。したがって、条件が数字になることはありません。 式の結果は常にTまたはFに評価されます。 たとえば、入力が「T? T? F:T:T」なので、出力はFになります。 これを解決するには、次の手順に従います。 ret:=空の文字列、n:=sのサイズ、
-
Pythonの文字列からブール式を評価するプログラム?
演算子「and」と「or」を含むブール式を含む文字列sがあるとします。それを評価して、結果を返します。ここでは、式に括弧が含まれている場合があります。これを最初に評価する必要があります。 したがって、入力がs =T and(F or T)のような場合、出力はTrueになります これを解決するには、次の手順に従います。 スタック:=新しいリスト t=空白で分割されたsの要素のリスト tのvごとに、実行します v[0]が(と同じ場合、 v [(のインデックスから終了]が Tと同じ場合、スタックにtrueをプッシュします それ以外の場合、「)」が見つかった