Pagini recente » Cod sursa (job #1534524) | Cod sursa (job #2141199) | Cod sursa (job #12147) | Cod sursa (job #562002) | Cod sursa (job #1496764)
#include<cstdio>
#define LEN 1000
#define N 100
using namespace std;
char S[LEN+1];
char modificari[N+1];
bool val[27];
int p;
bool expresie();
bool fact(){
bool R;
if (S[p]=='('){
p++;
R=expresie();
}
else
if (S[p]=='1' ||S[p]=='0') R=S[p]-'0';
else R=val[S[p]-'A'];
p++;
return R;
}
bool eval2(){
bool R,sign=0;
if (S[p]=='!'){
p++;
sign=1;
}
R=fact();
return R^sign;
}
bool eval1(){
bool T=eval2();
bool R;
R=T;
while(S[p]=='&'){
p++;
T=eval2();
R=(R&&T);
}
return R;
}
bool expresie(){
bool T=eval1();
bool R;
R=T;
while(S[p]=='|'){
p++;
T=eval1();
R=(R||T);
}
return R;
}
void trans(){
int i,j;
i=0;
j=0;
while(S[i]!='\n' &&S[i]!='\0'){
if (S[i]==' ') i++;
else
if (S[i]=='A' &&S[i+1]=='N'){
S[j]='&';
j++;
i+=3;
}
else
if (S[i]=='O' &&S[i+1]=='R'){
S[j]='|';
j++;
i+=2;
}
else
if (S[i]=='N' &&S[i+1]=='O'){
S[j]='!';
j++;
i+=3;
}
else
if (S[i]=='T' &&S[i+1]=='R'){
S[j]='1';
j++;
i+=4;
}
else
if (S[i]=='F' &&S[i+1]=='A'){
S[j]='0';
j++;
i+=5;
}
else {
S[j]=S[i];
j++;
i++;
}
}
S[j]='\0';
}
int main(){
freopen ("bool.in","r",stdin);
freopen ("bool.out","w",stdout);
int n,i;
gets(S);
scanf ("%d\n",&n);
gets(modificari);
trans();
for(i=0;i<n;i++){
val[modificari[i]-'A']=(val[modificari[i]-'A']^1);
p=0;
modificari[i]=expresie()+'0';
}
puts(modificari);
return 0;
}