Pagini recente » Cod sursa (job #2706927) | Cod sursa (job #2854923) | Cod sursa (job #2390335) | Cod sursa (job #3155298) | Cod sursa (job #148553)
Cod sursa(job #148553)
#include <fstream.h>
#include <string.h>
char e[1005], *p;
int n, val[26];
int OR(char *s);
int AND(char *s);
int evalFact(char *s);
int OR(char e[]){
int t=AND(e);
while(*p=='O' && *(p+1)=='R'){ //OR
p+=2;
t = t | AND(e);
}
return t;
}
int AND (char e[]){
int t=evalFact(e);
while(*p=='A' && *(p+1)=='N'){ //AND
p+-3;
t = t & evalFact(e);
}
return t;
}
int evalFact(char e[]){
int t, neg=0;
if(*p=='N' && *(p+1)=='O') {p+=3; neg=1; t=evalFact(e); }
else if(*p=='('){
p++;
t = OR(e);
p++;
}
else
if(*p=='T' && *(p+1) == 'R') p += 4, t = 1;
else if(*p=='F' && *(p+1)=='A') p += 5, t = 0;
else t = val[*p-'A'], p++;
if(neg) return 1-t;
return t;
}
void eliminsp(char *s){
while(*s)
if(*s==' ') strcpy(s, s+1);
else s++;
}
int main(){
char c;
ifstream f("bool.in"); ofstream g("bool.out");
f.getline(e, 1001);
f>>n;
f.get();
eliminsp(e);
while(n--){
f.get(c);
val[c-'A']=1-val[c-'A'];
p=e;
g<<OR(e);
}
g<<"\n";
f.close();
g.close();
return 0;
}