Pagini recente » Cod sursa (job #2235124) | Cod sursa (job #751533) | Cod sursa (job #2847066) | Cod sursa (job #2681230) | Cod sursa (job #876691)
Cod sursa(job #876691)
#include<fstream>
#include<string.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int p;
char s[1010], mod;
bool val[26];
bool si();
bool dif();
bool sau(){
bool aux = si();
while(s[p] == '|'){
p++;
aux = aux || si();
}
return aux;
}
bool si(){
bool aux = dif();
while(s[p] == '&'){
p++;
aux = aux && dif();
}
return aux;
}
bool dif(){
bool aux;
while(s[p] == '!'){
p++;
return !dif();
}
if(s[p] == '('){
p++;
aux = sau();
p++;
return aux;
}
aux = val[s[p]-'A'];
return aux;
}
int main(){
int i, j, m, n;
fin.getline(s, 1010);
n = strlen(s)-1;
for(i=0,j=0; i<n; ++i){
if(s[i]=='A' && s[i+1]=='N' && s[i+2]=='D'){
s[j] = '&';
i+= 3;
j++;
}
if(s[i]=='O' && s[i+1]=='R'){
s[j] = '|';
i+= 2;
j++;
}
if(s[i]=='N' && s[i+1]=='O' && s[i+2]=='T'){
s[j] = '!';
i+= 3;
j++;
}
if(s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E'){
s[j] = '1';
i+= 4;
j++;
}
if(s[i]=='F' && s[i+1]=='A' && s[i+2]=='L' && s[i+3]=='S' && s[i+3]=='E'){
s[j] = '0';
j++;
i+= 5;
}
if(s[i] == ' ')
;
else{
s[j] = s[i];
j++;
}
}
/*
s[j] = '\0';
fout << s;
*/
fin >> m;
for(i=0; i<m; ++i){
fin >> mod;
val[mod-65] = !val[mod-65];
fout << sau();
}
fin.close();
fout.close();
return 0;
}