Pagini recente » Cod sursa (job #792960) | Cod sursa (job #3246225) | Cod sursa (job #564043) | Cod sursa (job #2662589) | Cod sursa (job #148318)
Cod sursa(job #148318)
#include <fstream.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'){
p++; p++; if(*p==' ') p++;
t = t | AND(e);
if(*p==' ') p++;
}
return t;
}
int AND (char e[]){
int t=evalFact(e);
while(*p=='A' && *(p+1)=='N'){
p++; p++; p++; if(*p==' ') p++;
t = t & evalFact(e);
if(*p==' ') p++;
}
return t;
}
int evalFact(char e[]){
int t, neg=0;
if(*p=='N' && *(p+1)=='O') {p++; p++; p++; if(*p==' ') p++; neg=1; t=evalFact(e); }
else if(*p=='('){
p++; if(*p==' ') p++;
t = OR(e);
if(*p==' ') p++; p++; if(*p==' ') p++;
}
else{
if(*p=='T' && *(p+1) == 'R') {p++; p++; p++; p++; if(*p==' ') p++; t=1;}
else if(*p=='F' && *(p+1)=='A') {p++; p++; p++; p++; p++; if(*p==' ') p++; t=0;}
else{t = val[*p-'A'];
p++;
}
if(*p==' ') p++;
}
if(neg) return 1-t;
return t;
}
int main(){
int ok, i;
char c;
ifstream f("bool.in"); ofstream g("bool.out");
f.getline(e, 1001);
// f.get();
f>>n;
f.get();
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;
}