Pagini recente » Cod sursa (job #3291352) | Cod sursa (job #2252942) | Cod sursa (job #614969) | Cod sursa (job #2940870) | Cod sursa (job #1339038)
#include <fstream>
#include <cstring>
#define NR 1005
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
char a[NR];
int n,poz,L[30],d;
bool eval();
bool termen()
{
bool t;
while(a[poz]==' ') poz++;
if(a[poz]=='(')
{
poz++;
t=eval();
}
else
if(a[poz]=='N' && a[poz+1]=='O')
{
poz+=3;
t=!termen();
}
else
if(a[poz]=='T' && a[poz+1]=='R')
{
poz+=4;
t=true;
}
else
if(a[poz]=='F' && a[poz+1]=='A')
{
poz+=5;
t=false;
}
else
t=L[a[poz]-'A'],poz++;
return t;
}
bool eval()
{
bool t=termen();
while(poz<d)
{
if(a[poz]==' ') poz++;
else
if(a[poz]=='A' && a[poz+1]=='N')
{
poz+=3;
t=t&termen();
}
else
if(a[poz]=='O' && a[poz+1]=='R')
{
poz+=2;
t=t|eval();
}
else break;
}
return t;
}
int main()
{
char ch;
fin.getline(a,NR);
d=strlen(a);
fin>>n;
fin.get();
for(int i=1;i<=n;i++)
{
fin>>ch;
L[ch-'A']=!L[ch-'A'];
poz=0;
fout<<eval();
}
return 0;
}