Pagini recente » Borderou de evaluare (job #141105) | Cod sursa (job #2749230) | Borderou de evaluare (job #1398462) | Borderou de evaluare (job #648315) | Cod sursa (job #2411597)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int fr[30];
char exp[1010],*p=exp,c;
int n;
bool si();
bool term();
bool sau();
bool term()
{
bool rez=0;
if(*p=='(')
{
p++;
rez=sau();
p++;
}
else
{
if(*p=='N' && *(p+1)=='O')
{
p+=4;
rez=!term();
}
else
{
if(*p=='T' && *(p+1)=='R')
{
p+=5;
rez=1;
}
else
{
if(*p=='F' && *(p+1)=='A')
{
p+=6;
rez=0;
}
else
{
if(isalpha(*p))
{
rez=fr[*p-'A'];
p+=2;
}
else
p+=2;
}
}
}
}
return rez;
}
bool si()
{
bool r=term();
while(*p=='A' && *(p+1)=='N')
{
p+=4;
r=r&term();
}
return r;
}
bool sau()
{
bool r=si();
while(*p=='O' && *(p+1)=='R')
{
p+=3;
r=r|si();
}
return r;
}
int main()
{
fin.getline(exp,1000);
fin>>n;
fin.get();
for(int i=1; i<=n; i++)
{
fin>>c;
fr[c-'A']=!fr[c-'A'];
p=exp;
fout<<sau();
}
return 0;
}