Pagini recente » Cod sursa (job #664450) | Cod sursa (job #2866628) | Cod sursa (job #645519) | Cod sursa (job #1916424) | Cod sursa (job #876716)
Cod sursa(job #876716)
#include<fstream>
#include<string.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int p;
char s[1010], mod;
bool val[300];
bool si();
bool dif();
bool sau(){
bool aux = si();
while(s[p] == '|'){
p++;
aux |= si();
}
return aux;
}
bool si(){
bool aux = dif();
while(s[p] == '&'){
p++;
aux &= dif();
}
return aux;
}
bool dif(){
bool aux;
if (s[p] == '1') {
++p;
return 1;
}
if (s[p] == '0') {
++p;
return 0;
}
while(s[p] == '!'){
p++;
return !dif();
}
if(s[p] == '('){
p++;
aux = sau();
p++;
return aux;
}
aux = val[s[p]];
++p;
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+= 2;
j++;
}
else if(s[i]=='O' && s[i+1]=='R'){
s[j] = '|';
i+= 1;
j++;
}
else if(s[i]=='N' && s[i+1]=='O' && s[i+2]=='T'){
s[j] = '!';
i+= 2;
j++;
}
else if(s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E'){
s[j] = '1';
i+= 3;
j++;
}
else if(s[i]=='F' && s[i+1]=='A' && s[i+2]=='L' && s[i+3]=='S' && s[i+4]=='E'){
s[j] = '0';
j++;
i+= 4;
}
else if(s[i] == ' ');
else{
s[j] = s[i];
j++;
}
}
/*
s[j] = '\0';
fout << s;
*/
s[j] = '\0';
s[j + 1] = '\0';
fin >> m;
for(i=0; i<m; ++i){
fin >> mod;
val[mod] = !val[mod]; p = 0;
fout << sau();
}
fin.close();
fout.close();
return 0;
}