Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 문자열로 표현되는 부울 표현식 평가

<시간/>

이 문제에서는 부울 표현식을 나타내는 문자열 exp가 제공됩니다. 우리의 임무는 String으로 표현되는 부울 표현식을 평가하는 것입니다.

표현식의 유효한 문자는 -

입니다.

부울 값을 나타내는 0 또는 1
&를 나타내는 AND 연산

| OR 연산을 나타내는
^ XOR 연산을 나타냄

이 식을 풀고 결과를 반환해야 합니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

입력: str =1&1|0^1^0&1

출력: 0

설명:

1&1|0^1^0&1

1 및 1 또는 0 XOR 1 XOR 0 및 1

1 또는 0 XOR 1 XOR 0 및 1
1 XOR 1 XOR 0 및 1
0 XOR 0 및 1
0과 1

0

해결 방법:


간단한 해결 방법은 현재 값을 확인한 다음 하나씩 작업을 수행하는 것입니다. 이를 위해 문자열의 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