Pagini recente » Cod sursa (job #631507) | Cod sursa (job #2091517) | Cod sursa (job #686788) | Cod sursa (job #93961) | Cod sursa (job #2847706)
#include <bits/stdc++.h>
#define NMAX 1005
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char s[NMAX],s_cu_spatii[NMAX],c;
bool val[35];
int n,i,nr;
bool eval();
bool termen();
bool factor();
bool eval()
{
bool r=termen();
while (s[i]=='O' && s[i+1]=='R'){
i+=2;
r|=termen();
}
return r;
}
bool termen()
{
bool r = factor();
while(s[i]=='A' && s[i+1]=='N' && s[i+2]=='D'){
i+=3;
r&=factor();
}
return r;
}
bool factor()
{
bool r;
if (s[i]=='N' && s[i+1]=='O' && s[i+2]=='T'){
i+=3;
r=!factor();
}
else if (s[i]=='('){
i++;
r=eval();
i++;
}
else if (s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E'){
i+=4;
r=true;
}
else if (s[i]=='F' && s[i+1]=='A' && s[i+2]=='L' && s[i+3]=='S' && s[i+4]=='E'){
i+=5;
r=false;
}
else {
///variabila
r=val[s[i]-'A'];
i++;
}
return r;
}
int main()
{
f.tie(nullptr);
f.getline(s_cu_spatii,1005);
for (int i=0;i<strlen(s_cu_spatii); i++){
if (s_cu_spatii[i]!=' '){
s[nr++]=s_cu_spatii[i];
}
}
f>>n;
for (int i=0;i<=26;i++){
val[i]=false;
}
for (int j=1;j<=n;j++){
f>>c;
i=0;
val[c-'A']=!val[c-'A'];
g<<eval();
}
return 0;
}