Pagini recente » Cod sursa (job #2868072) | Cod sursa (job #1751373) | Cod sursa (job #2293359) | Cod sursa (job #64909) | Cod sursa (job #2661930)
#include <fstream>
using namespace std;
ifstream fin ("bool.in");
ofstream fout ("bool.out");
char s[1002];
int o[27],i,lg;
bool expresie ();
bool termen ();
bool factor ();
bool expresie ()
{
bool ok,x=termen();
ok=1;
if (s[i]!='O' || s[i+1]!='R')
ok=0;
else
i=i+2;
while (i<lg && ok)
{
bool evaluare=termen();
x=(x||evaluare);
if (s[i]!='O' || s[i+1]!='R')
ok=0;
else
i=i+2;
}
if (s[i]==')')
i++;
return x;
}
bool termen ()
{
bool ok,x=factor();
ok=1;
if(s[i]!='A' || s[i+1]!='N' || s[i+2]!='D')
ok=0;
else
i=i+3;
while (i<lg && ok)
{
bool evaluare=factor();
x=(x&&evaluare);
if (s[i]!='A' || s[i+1]!='N' || s[i+2]!='D')
ok=0;
else
i=i+3;
}
return x;
}
bool factor ()
{
bool neg=0,aux;
int ver;
while (s[i]=='N' && s[i+1]=='O' && s[i+2]=='T')
{
i=i+3;
neg=(neg==1?0:1);
}
if(s[i]=='(')
{
i++;
aux=expresie();
if(neg==0)
return aux;
return (aux==1?0:1);
}
ver=o[s[i]-'A'+1];
if(s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E')
{
i=i+4;
ver=1;
}
else
if(s[i]=='F' && s[i+1]=='A' && s[i+2] == 'L' && s[i+3]=='S' && s[i+4]=='E')
{
i=i+5;
ver=0;
}
else
i++;
if(neg==0)
return (ver==1?1:0);
return (ver==1?0:1);
}
int main ()
{
int n,y;
char h;
fin.get(h);
while(h!='\n')
{
if(h!=' ')
{
lg++;
s[lg-1]=h;
}
fin.get(h);
}
s[lg]='\0';
fin>>n;
fin.get();
for(y=1;y<=n;y++)
{
fin>>h;
o[h-'A'+1]=(o[h-'A'+1]==1?0:1);
i=0;
fout<<expresie();
}
}