Pagini recente » Cod sursa (job #1751231) | Cod sursa (job #2220306) | Cod sursa (job #1207828) | Cod sursa (job #294047) | Cod sursa (job #1310030)
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int i;
char s[1010];
char v[1010];
char c[1010];
int exp1();
int exp2();
int exp3();
int exp1(){
int r=0;
r=exp2();
while(v[i]=='|'){
i++;
r|=exp2();
}
return r;
}
int exp2(){
int r=0;
r=exp3();
while(v[i]=='&'){
i++;
r&=exp3();
}
return r;
}
int exp3(){
int r=0;
if(v[i]=='('){
i++;
r=exp1();
i++;
}else{
if(v[i]>='A' && v[i]<='Z'){
r = c[v[i]-'A'];
i++;
}
if(v[i]=='!'){
i++;
r = (exp1());
if (r)
r = 0;
else
r = 1;
} else
if(v[i]=='1'){
r=1;
i++;
} else
if(v[i]=='0'){
r=0;
i++;
}
}
return r;
}
int main(){
fin.get(s,1010);
int k=-1,n;
for(i=0;i<strlen(s);){
if(s[i]!=' '){
if(s[i]=='A' && s[i+1]=='N'){
v[++k]='&';
i+=3;
}
if(s[i]=='T' && s[i+1]=='R'){
v[++k]='1';
i+=4;
}
if(s[i]=='N' && s[i+1]=='O'){
v[++k]='!';
i+=3;
}
if(s[i]=='F' && s[i+1]=='A'){
v[++k]='0';
i+=5;
}
if(s[i]=='O' && s[i+1]=='R'){
v[++k]='|';
i+=2;
}
if(s[i]>='A' && s[i]<='Z' || s[i]=='(' || s[i]==')'){
v[++k]=s[i];
i++;
}
} else
i++;
}
fin>>n;
fin>>s;
for(int j=0;j<n;j++){
i=0;
c[s[j]-'A'] = (c[s[j]-'A'] + 1) % 2;
fout<<exp1();
}
return 0;
}