Pagini recente » Cod sursa (job #135894) | Cod sursa (job #2839353) | Cod sursa (job #1683657) | Cod sursa (job #3243119) | Cod sursa (job #1724351)
#include<bits/stdc++.h>
using namespace std;
string S;
int V[300],N,i,T;
char c;
bool eval(int val);
bool exp(){
while(S[i] == ' ')++i;
// cout << "ex " << i << '\n';
bool rs;
if(S[i] == '('){ ++i; return eval(exp());}
if(i+1 < N && S[i+1]!=' ' && S[i+1]!=')'){
if(S[i] == 'T')i+=4, rs = 1;else
if(S[i] == 'F')i+=5, rs = 0;else i+=3,rs = !exp();
}else rs = V[S[i]],i++;
return rs;
}
bool eval(int val){
// cout << "ev " << i << " " << val << '\n';
if(i>=N) return val;
while(S[i] == ' ')++i;
if(S[i] == ')'){i++;return val;}
if(i+1 < N){
if(S[i] == 'A'){i+=3; return eval(val&exp());}
if(S[i] == 'O'){i+=2; return val | eval(exp());}
}
return val;
}
int main(){
ifstream cin("bool.in");
ofstream cout("bool.out");
getline(cin,S);
//cout << S << '\n';
N = S.length();
cin >> T;
while(T--){
cin >> c;
V[c] = !V[c];
i = 0;
cout << eval(exp());
}
return 0;
}