Pagini recente » meesh | Cod sursa (job #2934743) | Cod sursa (job #2600261) | Cod sursa (job #7940) | Cod sursa (job #1003028)
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
#include <queue>
#include <iomanip>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
#define baza 10
#define MAX 100000
typedef long long int lli;
char S[MAX+10],*p=S, c[MAX];
int n;
bool a[30];
int termen();
int factor();
void spatiu()
{
while(*p==' ')
{
p++;
}
}
int eval()
{
spatiu();
int r=termen();
spatiu();
while(p[0]=='O' && p[1]=='R')
{
p+=2;
r|=termen();
spatiu();
}
spatiu();
return r;
}
int termen()
{
spatiu();
int r=factor();
spatiu();
while(p[0]=='A' && p[1]=='N' && p[2]=='D')
{
p+=3;
r&=factor();
spatiu();
}
spatiu();
return r;
}
int factor()
{
int r=0;
spatiu();
if(*p=='(')
{
p++;
r=eval();
p++;
}
else if(*p=='T' && *(p+1)=='R' && *(p+2)=='U' && *(p+3)=='E')
{
p+=4;
r=1;
}
else if(*p=='F' && *(p+1)=='A' && *(p+2)=='L' && *(p+3)=='S' && *(p+4)=='E')
{
p+=5;
r=0;
}
else if(*p=='N' && *(p+1)=='O' && *(p+2)=='T')
{
p+=3;
r=factor()^1;
}
else
{
r=a[*p-'A'+1];
p++;
}
spatiu();
return r;
}
int main()
{
fin.getline(S,MAX);
fin>>n;
fin.get(c[0]);
fin.getline(c,MAX);
for(int i=0;i<n;i++)
{
a[c[i]-'A'+1]^=1;
p=S;
fout<<eval();
}
return 0;
}