Pagini recente » Cod sursa (job #2084687) | Cod sursa (job #1367087) | Cod sursa (job #1091916) | Cod sursa (job #2722850) | Cod sursa (job #1499507)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
const int NMax = 1e3 + 5;
int k;
char *p;
char s[NMax];
bool value[30];
bool Termen();
bool Factor();
bool Solve(){
bool r = Termen();
while(*p == 'O' && *(p + 1) == 'R'){
p += 2;
r |= Termen();
}
return r;
}
bool Termen(){
bool r = Factor();
while(*p == 'A' && *(p + 1) == 'N'){
p += 3;
r &= Factor();
}
return r;
}
bool Factor(){
bool r = 0;
if(*p == 'N' && *(p + 1) == 'O'){
p += 3;
r |= !Factor();
} else {
if(*p == 'T' && *(p + 1) == 'R'){
p += 4;
r = 1;
} else {
if(*p == 'F' && *(p + 1) == 'A'){
p += 5;
r = 0;
} else {
if(*p == '('){
p++;
r = Solve();
p++;
} else {
r = value[*p - 'A'];
p++;
}
}
}
}
return r;
}
int main(){
int n;
char c;
while(fin.get(c) && c != '\n'){
if(c != ' ') s[k++] = c;
}
fin >> n;
while(n--){
fin >> c;
value[c - 'A'] ^= 1;
p = s;
fout << Solve();
}
return 0;
}