Pagini recente » Cod sursa (job #1151558) | Cod sursa (job #1840827) | Cod sursa (job #1607774) | Cod sursa (job #1923398) | Cod sursa (job #1834408)
#include<iostream>
#include<fstream>
#include<cstring>
#include<string>
using namespace std;
string s;
bool aux[130];
int i,l,n;
string parse(string s) {
string result="";
int i=0;
while (i<s.length()) {
if (s[i]==' ') { ++i; continue; }
if (i<s.length()-2 && s[i]=='A' && s[i+1]=='N' && s[i+2]=='D') { result+='a'; i+=3; }
else if (i<s.length()-2 && s[i]=='N' && s[i+1]=='O' && s[i+2]=='T') { result+='n'; i+=3; }
else if (i<s.length()-1 && s[i]=='O' && s[i+1]=='R') { result+='o'; i+=2; }
else if (i<s.length()-3 && s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E') { result+='t'; i+=4; }
else if (i<s.length()-3 && s[i]=='F' && s[i+1]=='A' && s[i+2]=='L' && s[i+3]=='S') { result+='f'; i+=5; }
else { result+=s[i]; ++i; }
}
return result;
}
bool evalOR();
bool evalNot() {
if (s[l]=='n') {
++l;
return 1-evalNot();
}
else
if (s[l]=='(') {
++l;
bool r=evalOR();
++l;
return r;
}
else {
++l;
return aux[s[l-1]];
}
}
bool evalAnd() {
bool andFactor = evalNot();
while (s[l]=='a') {
++l;
andFactor&=evalNot();
}
return andFactor;
}
bool evalOR() {
bool orFactor = evalAnd();
while (s[l]=='o') {
++l;
orFactor|=evalAnd();
}
return orFactor;
}
int main(void) {
ifstream cin("bool.in");
ofstream cout("bool.out");
getline(cin,s);
// cout<<s<<"\n";
s=parse(s);
// cout<<s<<"\n";
cin>>n;
char ch;
aux['t']=1;
aux['f']=0;
for (i=1; i<=n; ++i) {
cin>>ch;
aux[ch]=1-aux[ch];
l=0;
cout<<evalOR();
}
return 0;
}