Pagini recente » Cod sursa (job #1598565) | Cod sursa (job #2073680) | Cod sursa (job #1928847) | Cod sursa (job #2970645) | Cod sursa (job #1075563)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
int v[100],n,lg=-1,i;
char s[1001],bau,c;
int factor();
int termen();
int val();
int expr();
int main()
{
f>>c;
while(c!='\n')
{
s[++lg]=c;
f>>c;
}
f>>n;
for(int z=1; z<=n; z++)
{
f>>bau;
v[bau-'A']=!v[bau-'A'];
i=0;
g<<expr();
}
return 0;
}
int expr()
{
int h=termen(),aux;
while(i<lg&&s[i]=='O'&&s[i+1]=='R')
{
i+=3;
aux=termen();
h=aux||h;
}
return h;
}
int termen()
{
int h=factor();
while(i<lg&&s[i]=='A'&&s[i+1]=='N')
{
i+=4;
h=h&&factor();
}
return h;
}
int factor()
{
int h;
if (s[i]=='(')
{
++i;
h=expr();
++i;
if(s[i]==' ')
i++;
}
else
{
h=val();
}
return h;
}
int val()
{
int h;
if (s[i]=='N'&&s[i+1]=='O')
{
i+=4;
if (s[i]=='(')
{
i++;
h=!expr();
i++;
if(s[i]==' ')
i++;
}
else
h=!val();
}
else
if(s[i]=='T'&&s[i+1]=='R')
{
i+=4;
if(s[i]==' ')
i++;
h=1;
}
else if(s[i]=='F'&&s[i+1]=='A')
{
i+=5;
if(s[i]==' ')
i++;
h=0;
}
else
{
h=v[s[i]-'A'];
i++;
if(s[i]==' ')
i++;
}
return h;
}