Pagini recente » Cod sursa (job #2138295) | Cod sursa (job #1875830) | Cod sursa (job #2747772) | Cod sursa (job #1815906) | Cod sursa (job #983951)
Cod sursa(job #983951)
#include<fstream>
#define NMAX 5000
using namespace std;
ifstream f("bool.in"); ofstream g("bool.out");
int n;
bool b['Z'-'A'+1];
char s[NMAX],*p,c;
bool eval();
bool termen();
bool factor();
int main()
{ f.getline(s,NMAX);
f>>n;
for(int i=1;i<=n;++i)
f>>c, b[c-'A']=!b[c-'A'], p=s, g<<eval();
g.close(); return 0;
}
bool eval()
{ bool r=factor();
while(*p == 'O') p+=3, r=r|factor();
return r;
}
bool factor()
{ bool r = termen();
while(*p == 'A') p+=4, r=r&termen();
return r;
}
bool termen()
{ bool r=0;
if(*p=='(') ++p, r = eval(), ++p;
else if(*p=='T') p += 5, r = 1;
else if(*p=='F') p+=6, r=0;
else if(*p=='N') p+=4, r=!termen();
else r=b[*p-'A'], p+=2;
return r;
}