Pagini recente » Cod sursa (job #2653642) | Cod sursa (job #2970671) | Cod sursa (job #2229794) | Cod sursa (job #2554673) | Cod sursa (job #3226139)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
bool expresie();
bool termen();
bool factor();
char c[1005],s[1005],ch;
int q,n,i,fr[30];
bool expresie()
{
bool r=termen();
while(s[i]=='O'&&s[i+1]=='R')
{
i+=2;
r=r|termen();
}
return r;
}
bool termen()
{
bool r=factor();
while(s[i]=='A'&&s[i+1]=='N'&&s[i+2]=='D')
{
i+=3;
r=r&factor();
}
return r;
}
bool factor()
{
bool r;
if(s[i]=='(')
{
i++;
r=expresie();
i++;
}
else if(s[i]=='N'&&s[i+1]=='O'&&s[i+2]=='T')
{
i+=3;
r=!factor();
}
else if(s[i]=='T'&&s[i+1]=='R'&&s[i+2]=='U')
{
i+=4;
r=1;
}
else if(s[i]=='F'&&s[i+1]=='A'&&s[i+2]=='L')
{
i+=5;
r=0;
}
else
{
r=fr[s[i]-'A'];
i++;
}
return r;
}
int main()
{
cin.getline(c,1005);
for(int i=0; c[i]!=0; i++)
{
if(c[i]!=' ')
s[n++]=c[i];
}
cin>>q;
while(q--)
{
cin>>ch;
fr[ch-'A']=1-fr[ch-'A'];
i=0;
cout<<expresie();
}
return 0;
}