Pagini recente » Cod sursa (job #743618) | Cod sursa (job #3291135) | Cod sursa (job #669016) | Cod sursa (job #2717185) | Cod sursa (job #535712)
Cod sursa(job #535712)
#include<cstdio>
#include<cstring>
const int NMAX=1000;
char S[NMAX];
char s[NMAX];
int f[27];
char *p;
char sep[]={' '};
char c;
int poz;
bool termen();
bool factor();
bool expresie();
void transforma()
{ int i;
strcpy(S,s);
int nr=0;
int nn=strlen(S);
for (i=0;i<nn;++i)
{
if (S[i]=='T'&&S[i+1]=='R')
{
s[nr++]='1';
i=i+3;
continue;
}
if (S[i]=='F'&&S[i+1]=='A')
{
s[nr++]='0';
i+=4;
continue;
}
if (S[i]==' ')
{
continue;
}
if (S[i]=='N'&&S[i+1]=='O')
{
s[nr++]='!';
i+=2;
continue;
}
if (S[i]=='O'&&S[i+1]=='R')
{
s[nr++]='|';
i+=1;
continue;
}
if (S[i]=='A'&&S[i+1]=='N')
{
s[nr++]='&';
i+=2;
continue;
}
s[nr++]=S[i];
}
s[nr]=0;
strcpy(S,s);
}
void functie_smechera()
{
int n,i;
bool rez;
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(s);
transforma();
scanf("%d ",&n);
for (i=1;i<=n;++i)
{
scanf("%c",&c);
f[c-'A']++;
rez=expresie();
if (rez==true)
printf("1");
else printf("0");
}
}
bool expresie()
{
bool rez=termen();
while (S[poz]=='|')
{
poz++;
rez=rez|termen();
}
return rez;
}
bool termen()
{
bool rez2=factor();
while(S[poz]=='&')
{
++poz;
rez2=rez2&factor();
}
return rez2;
}
bool factor()
{
bool rez3;
if (S[poz]=='!')
{
poz++;
rez3=!factor();
}
if (S[poz]=='(')
{
poz++;
rez3=expresie();
poz++;
return rez3;
}
if (S[poz]=='0')
return false;
if (S[poz]=='1')
return true;
if (S[poz]>='A'&&S[poz]<='Z')
return f[S[poz]-'A']%2;
}
int main()
{
functie_smechera();
return 0;
}