Pagini recente » Cod sursa (job #937796) | Cod sursa (job #754517) | Cod sursa (job #1484459) | Cod sursa (job #1112652) | Cod sursa (job #1775939)
#include <iostream>
#include<fstream>
using namespace std;
string s,changes;
int c,i,n,val[30];
int eval();
int termen();
int termenmare();
int termenmare()
{
int val;
val=termen();
if(s[c]==' ') c++;
if(s[c]=='A'&&s[c+1]=='N')
{
c+=3;
val&=termenmare();
}
return val;
}
int termen()
{
int ret=0;
if(s[c]==' ')
c++;
if(s[c]=='T'&&s[c+1]=='R') {c+=4;return 1;}
if(s[c]=='F'&&s[c+1]=='A') {c+=5;return 0;}
if(s[c]=='(') {c++;ret=eval();return ret;}
if(s[c]=='N'&&s[c+1]=='O') {c+=3;ret=termen();return (1^ret);}
if(s[c]>='A'&&s[c]<='Z') {ret=val[s[c]-'A'];c++;return ret;}
}
int eval()
{
int curr=0;bool ok=0;
while(c<=s.size())
{
if(c==s.size()||s[c]==')') {c++;return curr;}
if(s[c]==' ') c++;
if(s[c]=='O'&&s[c+1]=='R')
{
c+=2;ok=1;
curr|=termenmare();
}
if(ok==0) curr=termenmare();
}
}
int main()
{
ifstream f("bool.in");
ofstream g("bool.out");
getline(f,s);
f>>n;
f>>changes;
c=0;
for(i=0;i<n;i++)
{
val[changes[i]-'A']^=1;
c=0;
g<<eval();
}
return 0;
}