Pagini recente » Cod sursa (job #1123724) | Cod sursa (job #2263418) | Clasament pre101 | Cod sursa (job #172484) | Cod sursa (job #564089)
Cod sursa(job #564089)
#include<fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char a[1001],*p,x;
bool v[26];
int N;
bool exp();
bool is(char x)
{ return (x>='A' && x<='Z');
}
bool andd(char *p)
{ if(*p=='A' && *(p+1)=='N' && *(p+2)=='D') return 1;
return 0;
}
bool orr(char *p)
{ if(*p=='O' && *(p+1)=='R') return 1;
return 0;
}
bool nott(char *p)
{ if(*p=='N' && *(p+1)=='O' && *(p+2)=='T') return 1;
return 0;
}
bool truee(char *p)
{ if(*p=='T' && *(p+1)=='R' && *(p+2)=='U' && *(p+3)=='E') return 1;
return 0;
}
bool falsee(char *p)
{ if(*p=='F' && *(p+1)=='A' && *(p+2)=='L' && *(p+3)=='S' && *(p+4)=='E') return 1;
return 0;
}
bool get()
{ bool rez; int op=-1;
if(*p==' ') p++;
if(nott(p)) p+=3 , op=1;
if(truee(p)) p+=4 , rez=1;
else if(falsee(p)) p+=5 , rez=0;
else rez=v[*p] , p++;
if(*p==' ') p++;
if(op==-1) return rez;
else return !rez;
}
bool fand()
{ bool rez;
if(*p==' ') p++;
if(*p=='(') p++ , rez=exp() , p++;
else rez=get();
return rez;
}
bool term()
{ bool rez=fand();
while(andd(p))
p+=3 , rez&=fand();
return rez;
}
bool exp()
{ bool rez=term();
while(orr(p))
p+=2 , rez|=term();
return rez;
}
int main()
{ f.get(a,1001);
f>>N;
for(int i=1;i<=N;i++)
{ f>>x; p=a;
v[x]=(v[x]==0?1:0);
g<<exp();
}
f.close();
g.close();
return 0;
}