Pagini recente » Cod sursa (job #1501295) | Cod sursa (job #2270376) | Cod sursa (job #1880557) | Cod sursa (job #1276685) | Cod sursa (job #1278322)
#include <fstream>
#define Lung 1006
#define Litere 137
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
int n,j,i=0,poz[Litere];
char y,x[Lung];
int eval();
int termen();
int factor();
int eval(){
int r = termen();
while(x[i+1] == 'O' && x[i+2] == 'R'){
if(x[i+1] == 'O' && x[i+2] == 'R'){
i += 4;
if(termen() == 1 || r == 1)
r = 1;
else
r = 0;
}
}
return r;
}
int termen(){
int r = factor();
while(x[i+1] == 'A' && x[i+2] == 'N' && x[i+3] == 'D'){
if(x[i+1] == 'A' && x[i+2] == 'N' && x[i+3] == 'D'){
i += 5;
if(factor() == 1 && r == 1)
r = 1;
else
r = 0;
}
}
return r;
}
int factor(){
int r = 0;
if(x[i] == '('){
++i;
r = eval();
++i;
}else
if(x[i] == 'N' && x[i+1] == 'O' && x[i+2]== 'T'){
i += 4;
return (!termen());
}else
if(x[i] == 'T' && x[i+1] == 'R' && x[i+2] == 'U' && x[i+3] == 'E'){
i += 4;
r = 1;
}else
if(x[i] == 'F' && x[i+1] == 'A' && x[i+2] == 'L' && x[i+3] == 'S' && x[i+4] == 'E'){
i += 5;
r = 0;
}else
if(x[i] <= 'Z' && x[i] >= 'A'){
if(poz[x[i]] == 0)
r = 0;
else
r = 1;
++i;
}
return r;
}
int main()
{
f.getline(x,Lung);
f >> n;
f.get();
for(j = 1; j <= n; j++){
f >> y;
i = 0;
if(poz[y] == 0)
poz[y] = 1;
else
poz[y] = 0;
g << eval();
}
return 0;
}