Pagini recente » Cod sursa (job #2981551) | Cod sursa (job #125049) | Cod sursa (job #1011772) | Cod sursa (job #1813218) | Cod sursa (job #1784151)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int l,k,val[30];
int evaluare();
int sol();
int elem();
char s[1010];
int evaluare()
{
int x,y,rez;
while(s[k]==' '&&k<l)
k++;
x=sol();
rez=x;
while(s[k]==' '&&k<l)
k++;
if(k<l-1)
while(s[k]=='O'&&s[k+1]=='R')
{
k+=2;
y=sol();
rez=rez|y;
}
while(s[k]==' '&&k<l)
k++;
return rez;
}
int sol()
{
int x,y,rez;
while(s[k]==' '&&k<l)
k++;
x=elem();
rez=x;
while(s[k]==' '&&k<l)
k++;
if(k<l-2)
while(s[k]=='A'&&s[k+1]=='N'&&s[k+2]=='D')
{
k+=3;
y=elem();
rez=rez&y;
}
while(s[k]==' '&&k<l)
k++;
return rez;
}
int elem()
{
int rez,x;
while(s[k]==' '&&k<l)
k++;
if(s[k]=='(')
{
k++;
rez=evaluare();
k++;
}
else if(s[k]=='N'&&s[k+1]=='O'&&s[k+2]=='T')
{
k+=3;
rez=1-elem();
}
else if(s[k]>='A'&&s[k]<='Z'&&(s[k+1]<'A'||s[k+1]>'Z'))
{
rez=val[s[k]-'A'];
k++;
}
else if(s[k]=='T')
{
k+=4;
rez=1;
}
else
{
k+=5;
rez=0;
}
while(s[k]==' '&&k<l)
k++;
return rez;
}
int main()
{
ifstream fin ("bool.in");
ofstream fout ("bool.out");
int n,i;
char c;
fin.getline(s,1010);
l=strlen(s);
fin>>n;
for(i=1; i<=n; i++)
{
fin>>c;
val[c-'A']=1-val[c-'A'];
k=0;
fout<<evaluare();
}
return 0;
}