Pagini recente » Cod sursa (job #1234616) | Cod sursa (job #2134288) | Cod sursa (job #1260540) | Cod sursa (job #929883) | Cod sursa (job #2260337)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
const int NMAX=1e3;
char s[NMAX+5], SOL[NMAX+5];
int N, i, S, poz;
int curent[30];
int eval();
int factor();
int termen();
int eval()
{
int ans=factor();
while(s[poz]!=')' && s[poz])
{
poz+=4;
ans|=factor();
}
return ans;
}
int factor()
{
int ans=termen();
while(s[poz+1]=='A' && s[poz])
{
poz+=5;
ans&=termen();
}
return ans;
}
int termen()
{
if(s[poz]=='N' && s[poz+1]=='O' && s[poz+2]=='T')
{
poz+=4;
return !termen();
}
else if(s[poz]=='T' && s[poz+1]=='R' && s[poz+2]=='U' && s[poz+3]=='E')
{
poz+=4;
return 1;
}
else if(s[poz]=='F' && s[poz+1]=='A' && s[poz+2]=='L' && s[poz+3]=='S' && s[poz+4]=='E')
{
poz+=5;
return 0;
}
else if(s[poz]=='(')
{
int ans;
poz++;
ans=eval();
poz++;
return ans;
}
else
{
poz++;
return curent[s[poz-1]-'A'];
}
}
int main()
{
f.getline(s, NMAX+1);
f>>N>>SOL;
for(i=1; i<=N; i++)
{
curent[SOL[i-1]-'A']=!curent[SOL[i-1]-'A'];
g<<eval();
poz=0;
}
g<<'\n';
return 0;
}