Pagini recente » Cod sursa (job #3176789) | Cod sursa (job #2025367) | Cod sursa (job #1870033) | Cod sursa (job #248824) | Cod sursa (job #198119)
Cod sursa(job #198119)
#include<stdio.h>
char s[1010],*p;
bool val[30];
int n;
bool ptsi();
bool ptsau();
bool ptnot();
bool verif(int x)
{
if(*p==' ')
p++;
char *aux;
aux=p;
if(x==1)
{
if(*aux=='N')
{
aux++;
if(*aux=='O')
{
aux++;
if(*aux=='T')
{
p=aux+1;
return true;
}
}
}
return false;
}
if(x==2)
{
if(*aux=='A')
{
aux++;
if(*aux=='N')
{
aux++;
if(*aux=='D')
{
p=aux+1;
return true;
}
}
}
return false;
}
if(*aux=='O')
{
aux++;
if(*aux=='R')
{
p=aux+1;
return true;
}
}
return false;
}
bool eval()
{
if(*p==' ')
p++;
bool r=ptsau();
while(verif(3))
r|=ptsau();
return r;
}
bool ptsau()
{
bool r=ptsi();
if(*p==' ')
p++;
while(verif(2))
r&=ptsi();
return r;
}
bool ptsi()
{
bool r;
if(*p==' ')
p++;
bool schimb=false;
while(verif(1))
{
if(schimb)
schimb=false;
else
schimb=true;
if(*p==' ')
p++;
}
/*if(*p=='(')
{
p++;
r=eval();
p++;
if(schimb)
return r==true ? false : true;
return r;
}*/
r=ptnot();
if(schimb)
r=!r;
return r;
}
int verifcun()
{
char aux[10];
char *ca;
bool ok=true;
aux[0]='T';
aux[1]='R';
aux[2]='U';
aux[3]='E';
int i;
if(*p==' ')
p++;
for(i=0,ca=p; (i<4)&&(ok); i++,ca++)
if(*ca!=aux[i])
ok=false;
if(ok)
{
p=ca;
return 1;
}
aux[0]='F';
aux[1]='A';
aux[2]='L';
aux[3]='S';
aux[4]='E';
for(i=0,ca=p; (i<5)&&(ok); i++,ca++)
if(*ca!=aux[i])
ok=false;
if(ok)
{
p=ca;
return 2;
}
return 0;
}
bool ptnot()
{
bool r=false;
int aux;
if(*p==' ')
p++;
if(*p=='(')
{
p++;
r=eval();
p++;
}
else
{
aux=verifcun();
if(aux)
return aux==2 ? false : true;
if(((*p)>='A')&&(*p<='Z'))
r=val[*p-'A'];
p++;
}
return r;
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
fgets(s,1010,stdin);
scanf("%d\n",&n);
char c;
for(int i=0; i<n; i++)
{
scanf("%c",&c);
p=s;
if(val[c-'A'])
val[c-'A']=false;
else
val[c-'A']=true;
printf("%d",eval()==true ? 1 : 0);
}
printf("\n");
return 0;
}