Pagini recente » Cod sursa (job #1765191) | Cod sursa (job #825162) | Cod sursa (job #795501) | Cod sursa (job #756267) | Cod sursa (job #2220209)
#include<fstream>
#include<queue>
#include<iostream>
#include<cstring>
#include<map>
#include<algorithm>
#include<unordered_map>
#include<stack>
#define DN 1005
#define x first
#define y second
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int n,poz,r[35],nr=-1,m;
char a[DN],q[DN],b[DN];
int ve();
int factor()
{
int s=0;
if(a[poz]=='N'&&a[poz+1]=='O')
{
poz+=3;
s=1-factor();
}
else
if(a[poz]=='(')
{
poz++;
s=ve();
poz++;
}
else
if(a[poz]=='T'&&a[poz+1]=='R')
{
poz+=4;
s=1;
}
else
if(a[poz]=='F'&&a[poz+1]=='A')
{
poz+=5;
s=0;
}
else
{
s=r[a[poz]-'A'];
poz++;
}
//cout<<s<<'\n';
return s;
}
int termen()
{
int s;
s=factor();
while(a[poz]=='A')
{
poz+=3;
s=(s&factor());
}
//cout<<s<<'\n';
return s;
}
int ve()
{
int s=0;
s=termen();
while(a[poz]=='O')
{
poz+=2;
s=(s|termen());
}
// cout<<s<<'\n';
return s;
}
int main()
{
fin.getline(b,DN);
fin>>n;
fin.getline(q+1,DN);
fin.getline(q+1,DN);
m=strlen(b);
for(int i=0;i<m;i++)
if(b[i]!=' ')
{
nr++;
a[nr]=b[i];
}
nr++;
a[nr]='\0';
for(int i=1;i<=n;i++)
{
r[q[i]-'A']=1-r[q[i]-'A'];
poz=0;
fout<<ve();
}
}