Pagini recente » Cod sursa (job #3154131) | Cod sursa (job #1698227) | Cod sursa (job #1806798) | Cod sursa (job #1694475) | Cod sursa (job #3271712)
#include <fstream>
using namespace std;
const int NMAX = 1001;
ifstream fin("bool.in");
ofstream fout("bool.out");
bool alf[26], expresie(), termen(), factor();
char *p;
bool expresie()
{
bool crt = termen();
while(*p == 'O') p += 3, crt = termen() || crt;
return crt;
}
bool termen()
{
bool crt = factor();
while(*p == 'A') p += 4, crt = factor() && crt;
return crt;
}
bool factor()
{
bool crt, neg = 0;
if(*p == 'N' && *(p + 1) == 'O') p += 4, neg = 1;
if(*p == '(') ++p, crt = expresie(), ++p;
else if(*p == 'T' && *(p + 1) == 'R') crt = 1, p += 4;
else if(*p == 'F' && *(p + 1) == 'A') crt = 0, p += 5;
else crt = alf[*p - 'A'], ++p;
if(*p == ' ') ++p;
return (neg ? !crt : crt);
}
int main()
{
char s[NMAX];
fin.getline(s, NMAX);
int n;
char c;
fin >> n;
while(n--)
{
fin >> c;
alf[c - 'A'] ^= 1;
p = s;
fout << expresie();
}
return 0;
}