Pagini recente » Cod sursa (job #2830075) | Cod sursa (job #254071) | Cod sursa (job #891836) | Cod sursa (job #902258) | Cod sursa (job #1026602)
#include <fstream>
using namespace std;
ifstream fin ("bool.in");
ofstream fout ("bool.out");
char c[1020],s[1020],m[110];
int i,k,n,j;
int v[200];
int termen1 ();
int termen2 ();
int termen3 ();
int termen4 ();
int termen1 () {
int r=termen2 ();
while (c[i]=='|') {
i++;
r=(r||termen2());
}
return r;
}
int termen2 () {
int r=termen3 ();
while (c[i]=='&') {
i++;
r=(r && termen3());
}
return r;
}
int termen3 () {
int r=termen4();
if (c[i]=='!') {
i++;
r=(!termen4());
}
return r;
}
int termen4 () {
int r;
if (c[i]=='(') {
i++;
r=termen1();
i++;
}else {
if (c[i]>='A' && c[i]<='Z' ) {
r=v[c[i]];
i++;
}else {
r=c[i]-'0';
i++;
}
}
return r;
}
int main () {
fin.get (s,1000);
fin.get ();
while (s[i]=='('){
c[++k]='(';
i++;
}
for (;s[i]!=0;i++) {
if (((s[i]>='A'&&s[i]<='Z'))&& (s[i+1]==' '||s[i+1]==')')){
c[++k]=s[i];
}else
if (s[i]=='N'){
c[++k]='2';
c[++k]='!';
i+=4;
c[++k]=s[i];
}else
if (s[i]=='T'){
c[++k]='1';
i+=4;
}else
if (s[i]=='F'){
c[++k]='0';
i+=4;
}else
if (s[i]=='('){
c[++k]='(';
}else
if (s[i]==')')
c[++k]=')';
else
if (s[i]=='O'){
c[++k]='|';
i+=2;
}else {
if (s[i]=='A'){
c[++k]='&';
i+=3;
}
}
}
fin>>n;
fin>>m;
//fout<<c+1<<"\n";
for (j=0;j<n;j++) {
v[m[j]]=!(v[m[j]]);
i=1;
fout<<termen1();
}
return 0;
}