Pagini recente » Cod sursa (job #2201552) | Cod sursa (job #1815232) | Cod sursa (job #2885846) | Cod sursa (job #720844) | Cod sursa (job #1799784)
#include <cstdio>
#define totalLitere 26
#define MAX_S 1000
using namespace std;
char s[MAX_S+5], *p;
bool vc[totalLitere+5];
bool factor();
bool termen();
bool eval(){
bool ans=factor();
while (*p=='O' && *(p+1)=='R'){
p+=2;
ans|=factor();
}
if (*p==' ') p++;
return ans;
}
bool factor(){
if (*p==' ') p++;
bool ans=termen();
while (*p=='A' && *(p+1)=='N' && *(p+2)=='D'){
p+=3;
ans&=termen();
}
if (*p==' ') p++;
return ans;
}
bool termen(){
if (*p==' ') p++;
bool ans;
if (*p=='('){
p++;
ans=eval();
p++;
}else
if (*p=='N' && *(p+1)=='O' && *(p+2)=='T'){
p+=3;
ans=!termen();
}else
if (*p=='T' && *(p+1)=='R' && *(p+2)=='U' && *(p+3)=='E'){
p+=4;
ans=true;
}else
if (*p=='F' && *(p+1)=='A' && *(p+2)=='L' && *(p+3)=='S' && *(p+4)=='E'){
p+=5;
ans=false;
}else
if (*p>='A' && *p<='Z'){
ans=vc[*p-'A'];
p++;
}
if (*p==' ') p++;
return ans;
}
int main(){
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
int n, i;
char ch;
gets(s);
scanf("%d\n", &n);
for (i=1; i<=n; i++){
scanf("%c", &ch);
vc[ch-'A']=!vc[ch-'A'];
p=s;
printf("%d", eval());
}
return 0;
}