Pagini recente » Cod sursa (job #652575) | Cod sursa (job #283879) | Cod sursa (job #1547184) | Cod sursa (job #1190274) | Cod sursa (job #2589397)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bool.in");
ofstream fout ("bool.out");
char sir[1025],stiva[1005],c;int last,stiva1[1005],last1,v[305],n,nr,nr1,q;
int main () {
fin.getline(sir+1,1015);fin>>q;++q;n=strlen(sir+1);
while(--q) {
fin>>c;last=0;last1=0;
while(c<'A' || c>'Z')
fin>>c;
v[(int)c]^=1;
for(int i=1;i<=n;++i) {
if(sir[i]==' ')
continue;
else if (sir[i]>='A' && sir[i]<='Z') {
if(sir[i+1]==' ' || sir[i+1]=='(' || sir[i+1]==')')
stiva1[++last1]=v[(int)sir[i]];
else {
if(sir[i]=='N')
stiva[++last]='~';
else if (sir[i]=='T')
stiva1[++last1]=1;
else if (sir[i]=='F')
stiva1[++last1]=0;
else if (sir[i]=='A') {
while(last>0 && (stiva[last]=='~' || stiva[last]=='&') ) {
if(stiva[last]=='~')
stiva1[last1]^=1;
else if (stiva[last]=='&')
nr=stiva1[last1],nr1=stiva1[last1-1],last1-=2,stiva1[++last1]=(nr & nr1);
--last;
}
stiva[++last]='&';
}
else if (sir[i]=='O') {
while(last>0 && (stiva[last]=='~' || stiva[last]=='|' || stiva[last]=='&') ) {
if(stiva[last]=='~')
stiva1[last1]^=1;
else if (stiva[last]=='|')
nr=stiva1[last1],nr1=stiva1[last1-1],last1-=2,stiva1[++last1]=(nr | nr1);
else if (stiva[last]=='&')
nr=stiva1[last1],nr1=stiva1[last1-1],last1-=2,stiva1[++last1]=(nr & nr1);
--last;
}
stiva[++last]='|';
}
while(sir[i]>='A' && sir[i]<='Z')
++i;
--i;
}
}
else if(sir[i]=='(')
stiva[++last]=sir[i];
else if (sir[i]==')') {
while(stiva[last]!='(') {
if(stiva[last]=='~')
stiva1[last1]^=1;
else if(stiva[last]=='|')
nr=stiva1[last1],nr1=stiva1[last1-1],last1-=2,stiva1[++last1]=(nr | nr1);
else if (stiva[last]=='&')
nr=stiva1[last1],nr1=stiva1[last1-1],last1-=2,stiva1[++last1]=(nr & nr1);
--last;
}
--last;
}
}
while(last>0) {
if(stiva[last]=='~')
stiva1[last1]^=1;
else if(stiva[last]=='&')
nr=stiva1[last1],nr1=stiva1[last1-1],last1-=2,stiva1[++last1]=(nr & nr1);
else if (stiva[last]=='|')
nr=stiva1[last1],nr1=stiva1[last1-1],last1-=2,stiva1[++last1]=(nr | nr1);
--last;
}
fout<<stiva1[last1];
}
return 0;
}