Pagini recente » Cod sursa (job #2225396) | Cod sursa (job #1599569) | Cod sursa (job #2569853) | Cod sursa (job #3227918) | Cod sursa (job #1203814)
#include <fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char ex[1024],*p=ex,ch[110];
bool val[256];
bool eval(),andex(),fact();
bool eval()
{
bool rez = andex();
while(*p == 'O' && *(p + 1) == 'R')
{
p += 2;
rez |= andex();
}
return rez;
}
bool andex()
{
bool rez = fact();
while(*p == 'A' && *(p + 1) == 'N')
{
p += 3;
rez &= fact();
}
return rez;
}
bool fact()
{
bool rez=0;
if(*p == 'N' && *(p + 1) == 'O')
{
p += 3;
rez |= !fact();
}
else if(*p == 'T' && *(p + 1) == 'R')
{
p += 4;
rez = 1;
}
else if(*p == 'F' && *(p + 1) == 'A')
{
p += 5;
rez = 0;
}
else if(*p=='(')
{
++p;
rez = eval();
++p;
}
else
{
rez = val[*p - 'A'];
++p;
}
return rez;
}
int main()
{
int n,i,t;
char *c;
f.getline(ex, 1024);
f>>n>>ch;
t=0;
for(c=ex;c[0]!='\0';c++)
if(isspace(c[0])) t++;
else c[0-t]=c[0];
c[-t]='\0';
for(i=0;i<26;i++)
val[i]=0;
for(i=0;i<n;i++)
{
val[ch[i]-'A']=!val[ch[i]-'A'];
p=ex;
g<<eval();
}
f.close();
g.close();
return 0;
}