Pagini recente » Cod sursa (job #3190298) | Cod sursa (job #125073) | Cod sursa (job #2762137) | Cod sursa (job #1849393) | Cod sursa (job #2444296)
#include <fstream>
#include <string>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
char s[10005], *p;
bool v[27];
bool eval();
bool termen()
{
bool aux = 0;
if(*p == '(')
p++, aux = eval(), p++;
else if(*p == 'F' && *p == 'A')
p += 6, aux = 0;
else if(*p == 'T' && *p == 'R')
p += 5, aux = 1;
else if(*p == 'N' && *(p + 1) == 'O')
p += 4, aux = !eval();
else aux = v[*p - 'A'], p += 2;
;
return aux;
}
bool produs()
{
bool aux = termen();
while(*p == 'A' && *(p + 1) == 'N')
p = p + 4, aux &= termen();
return aux;
}
bool eval()
{
bool aux = produs();
while(*p == 'O' && *(p + 1) == 'R')
p += 3, aux |= produs();
return aux;
}
int main()
{
int n;
char c;
cin.getline(s,1005);
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
cin >> c;
v[c-'A'] = !v[c - 'A'];
p = s;
cout << eval();
}
return 0;
}