Pagini recente » Cod sursa (job #317239) | Cod sursa (job #461097) | Cod sursa (job #502836) | Cod sursa (job #1053555) | Cod sursa (job #1121597)
#include <cstring>
#include <fstream>
using namespace std;
ifstream in("bool.in");
ofstream out("bool.out");
int var['Z'-'A'+1];
char s[1000];
int l;
int p;
int expresie();
int termen();
int factor();
int expresie()
{
int val=termen();
while(p+1<l && s[p]=='O' && s[p+1]=='R')
{
p+=3;
val=val | termen();
}
return val;
}
int termen()
{
int val=factor();
while(p+2<l && s[p]=='A' && s[p+1]=='N' && s[p+2]=='D')
{
p+=4;
val=val & factor();
}
return val;
}
int factor()
{
int semn=1,val=0;
if(p+2<l && s[p]=='N' && s[p+1]=='O' && s[p+2]=='T')
while(p+2<l && s[p]=='N' && s[p+1]=='O' && s[p+2]=='T')
{
p+=4;
semn=-semn;
}
if(p+3<l && s[p]=='T' && s[p+1]=='R' && s[p+2]=='U' && s[p+3]=='E')
{
p+=5;
val=1;
if(semn==1)
return val;
return 1-val;
}
if(p+4<l && s[p]=='F' && s[p+1]=='A' && s[p+2]=='L' && s[p+3]=='S' && s[p+4]=='E')
{
p+=6;
val=0;
if(semn==1)
return val;
return 1-val;
}
if(s[p]=='(')
{
p++;
val=expresie();
p++;
if(semn==1)
return val;
return 1-val;
}
val=var[s[p]-'A'];
p+=2;
if(semn==1)
return val;
return 1-val;
}
int main()
{
int n;
in.get(s,sizeof(s));
l=strlen(s);
in>>n;
int i;
char c;
for(i=1;i<=n;i++)
{
in>>c;
var[c-'A']=1-var[c-'A'];
p=0;
int q=expresie();
out<<q;
}
return 0;
}