Pagini recente » Cod sursa (job #1418878) | Cod sursa (job #303625) | Cod sursa (job #1116034) | Cod sursa (job #3239549) | Cod sursa (job #1074734)
#include<fstream>
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 f=termen(),aux;
while(i<lg&&s[i]=='O'&&s[i+1]=='R')
{
i+=3;
aux=termen();
f=aux||f;
}
return f;
}
int termen()
{
int f=factor();
while(i<lg && s[i]=='A' && s[i+1]=='N')
{
i+=4;
f=f&&factor();
}
return f;
}
int factor()
{
int f;
if (s[i]=='(')
{
++i;
f=expr();
++i;
if(s[i]==' ')
i++;
}
else
{
f=val();
}
return f;
}
int val()
{
int f;
if (s[i]=='N'&&s[i+1]=='O')
{
i+=4;
if (s[i]=='(')
{
i++;
f=!expr();
i++;
if(s[i]==' ')
i++;
}
else
f=!val();
}
else
if(s[i]=='T'&&s[i+1]=='R')
{
i+=4;
if(s[i]==' ')
i++;
f=1;
}
else if(s[i]=='F'&&s[i+1]=='A')
{
i+=5;
if(s[i]==' ')
i++;
f=0;
}
else
{
f=v[s[i]-'A'];
i++;
if(s[i]==' ')
i++;
}
return f;
}