Pagini recente » Cod sursa (job #2497955) | Cod sursa (job #3217638) | Cod sursa (job #2615984) | Cod sursa (job #3259114) | Cod sursa (job #903674)
Cod sursa(job #903674)
#include<cstdio>
#define max_dim 10005
using namespace std;
FILE *f,*g;
char s[max_dim],*c;
int alfab[30];
int E(),T(),F();
int E()
{
int rez=T();
while((*c=='A' && *(c+1)=='N' && *(c+2)=='D') || (*c=='O' && *(c+1)=='R'))
{
if(*c=='A' && *(c+1)=='N' && *(c+2)=='D')
{
c+=4;
rez=(rez & T());
}
else
{
c+=3;
rez=(rez || T());
}
}
return rez;
}
int T()
{
int rez=F();
while(*c=='N' && *(c+1)=='O' && *(c+2)=='T')
{
if(*c=='N' && *(c+1)=='O' && *(c+2)=='T')
{
c+=3;
rez=F();
rez=!rez;
}
}
return rez;
}
int F()
{
int rez=0;
if(*c=='(')
{
c++;
rez=E();
c++;
return rez;
}
while(*c>='A' && *c<='Z' && (*(c+1)==' ' || *(c+1)==')' || *(c+4)==' ' || *(c+4)==')' || *(c+5)==' ' || *(c+5)==')'))
{
if(*c>='A' && *c<='Z' && (*(c+1)==' ' || *(c+1)==')'))
{
rez=alfab[*c-65];
c+=2;
}
else
if(*c=='T' && *(c+1)=='R')
{
rez=1;
c+=4;
}
else
if(*c=='F' && *(c+1)=='A')
{
rez=0;
c+=5;
}
else
return rez;
}
return rez;
}
int main()
{
int q;
char ch;
f=fopen("bool.in","r");
g=fopen("bool.out","w");
fgets(s,max_dim,f);
fscanf(f,"%d",&q);
fscanf(f,"%c",&ch);
for(int i=1;i<=q;i++)
{
c=s;
fscanf(f,"%c",&ch);
if(alfab[ch-65])
alfab[ch-65]=0;
else
alfab[ch-65]=1;
fprintf(g,"%d",E());
}
return 0;
}