Pagini recente » Cod sursa (job #1262200) | Cod sursa (job #511562) | Cod sursa (job #2708186) | Cod sursa (job #495222) | Cod sursa (job #281923)
Cod sursa(job #281923)
#include <stdio.h>
#include <string.h>
#include <iostream.h>
char e[1000];
enum bool {false, true};
bool alf[26]={false};
int L, N, i;
bool EvaluareExpresie();
bool EvaluareOr();
bool EvaluareAnd();
char* extra(int k)
{
char temp[100];
int t=0;
while(k<L && e[k]!=' ')
temp[t++]=e[k++];
temp[t]=0;
return &temp[0];
}
bool EvaluareExpresie()
{
bool rez;
rez=EvaluareOr();
while(i<L && !strcmp(extra(i), "OR"))
{
i+=3;
rez = rez || EvaluareOr();
}
return rez;
}
bool EvaluareOr()
{
bool rez;
rez=EvaluareAnd();
while(i<L && !strcmp(extra(i), "AND"))
{
i+=4;
rez = rez && EvaluareAnd();
}
return rez;
}
bool EvaluareAnd()
{
bool rez;
if(e[i]=='(')
{
i++;
rez=EvaluareExpresie();
i++;
}
else
if(!strcmp(extra(i), "NOT"))
{
i+=4;
rez=!EvaluareExpresie();
}
else
if(e[i]>='A'&&e[i]<='Z' && (e[i+1]==' ' || e[i+1]==')'))
{
rez=alf[e[i]-'A'];
i+=2;
}
else
if(!strcmp(extra(i), "FALSE"))
{
i+=6;
return false;
}
else
{
i+=5;
return true;
}
return rez;
}
int main ()
{
char c;
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
cin.getline(e, 1000);
cin>>N;
L=strlen(e);
for(int j=0; j<N; j++)
{
cin>>c;
alf[c-'A']=!alf[c-'A'];
i=0;
printf("%d", EvaluareExpresie());
}
return 0;
}