Pagini recente » Profil CristianCazacu | Cod sursa (job #122570) | Cod sursa (job #1568925) | Cod sursa (job #2931144) | Cod sursa (job #2032078)
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
#define is() if(a[i]==' ')++i
#define cuv() while(a[i]>='A')++i
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
int i,n;char o,a[1002];
bool val['Z'+1];
bool eval();
bool getval();
bool eval()
{
bool t=getval();
if(a[i]==')'){++i;is();return t;}
switch (a[i])
{
case 'A':cuv();is();return t&&getval();break;//AND
case 'O':cuv();is();return t||getval();break;//OR
}
}
bool getval()
{
if(a[i]=='('){++i;
return eval();}
bool t=0;
while(a[i+1]=='O'){cuv();is();t=!t;}//NOT
if (a[i+1]=='R'){cuv();is();return t^1;}//TRUE
if (a[i+1]=='A'){cuv();is();return t^0;}//FALSE
t=val[a[i]]^t;cuv();is();
return t;
}
int main()
{
f.getline(a,1001);
f>>n;
for(int q=1;q<=n;++q)
{
f>>o;i=0;
val[o]=!val[o];
g<<eval();
}
}