Pagini recente » Cod sursa (job #1858994) | Cod sursa (job #1944744) | Cod sursa (job #1791587) | Cod sursa (job #1553548) | Cod sursa (job #1760336)
#include<fstream>
#include<string>
using namespace std;
string s;
int v[300],n,i,t;
char c;
bool eval(int val);
bool exp()
{
while(s[i]==' ')
++i;
bool rs;
if(s[i]=='(')
{
++i;
return eval(exp());
}
if(i+1<n&&s[i+1]!=' '&&s[i+1]!=')')
{
if(s[i]=='t')
{
i+=4;
rs=1;
}
else if(s[i]=='F')
{
i+=5;
rs=0;
}
else
{
i+=3;
rs=!exp();
}
}
else
{
rs=v[s[i]];
i++;
}
return rs;
}
bool eval(int val)
{
if(i>=n)
return val;
while(s[i]==' ')
++i;
if(s[i]==')')
{
i++;
return val;
}
if(i+1<n)
{
if(s[i]=='A')
{
i+=3;
return eval(val&exp());
}
if(s[i]=='O')
{
i+=2;
return val|eval(exp());
}
}
return val;
}
int main()
{
ifstream f("bool.in");
ofstream g("bool.out");
getline(f,s);
n=s.length();
f>>t;
while(t--)
{
f>>c;
v[c]=!v[c];
i=0;
g<<eval(exp());
}
return 0;
}