Pagini recente » Cod sursa (job #2410631) | Autentificare | Cod sursa (job #1936137) | Cod sursa (job #1285491) | Cod sursa (job #1121512)
#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(s[p]=='(')
{
p++;
val=expresie();
p++;
if(semn==1)
return val;
return 1-val;
}
val=var[s[p]-'A'];
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;
}