Pagini recente » Cod sursa (job #551152) | Cod sursa (job #2897700) | Cod sursa (job #583980) | Cod sursa (job #258005) | Cod sursa (job #2816407)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
bool expresie();
bool termen();
bool factor();
char v[1010], s[1010], c;
int i, k=-1;///indicele cu care parcurg expresia
bool fr[27];
int n;
bool expresie()
{
bool ok=termen();
while(s[i]=='O' && s[i+1]=='R')
{
i+=2;
ok=ok||termen();
}
return ok;
}
bool termen()
{
bool ok=factor();
while(s[i]=='A' && s[i+1]=='N' && s[i+2]=='D')
{
i+=3;
ok=ok&&factor();
}
return ok;
}
bool factor()
{
bool ok;
if(s[i]=='(')
{
i++;
ok=expresie();
i++;
}
else
{
if(s[i]=='T'&&s[i+1]=='R')
ok=1, i+=4;
else if(s[i]=='F'&& s[i+1]=='A')
ok=0, i+=5;
else if(s[i]=='N' && s[i+1]=='O' && s[i+2]=='T')
ok=!expresie();
else if(s[i]>='A' && s[i]<='B')
ok=fr[s[i]-'A'];
}
return ok;
}
int main()
{
///stergerea spatiilor
fin.getline(v, 1001);
for(int i=0; v[i]; i++)
if(v[i]!=' ')
s[++k]=v[i];
//fout<<s;
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>c;
fr[c-'A']=!fr[c-'A'];
fout<<expresie();
}
return 0;
}