Pagini recente » Cod sursa (job #1964732) | Cod sursa (job #3196851) | Cod sursa (job #2443223) | Cod sursa (job #1869302) | Cod sursa (job #2531695)
#include <fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char s[1005],*p;
int n;
bool val[1005];
bool oor();
bool valoare();
bool aand();
bool oor()
{
bool r=aand();
p++;
while(*p=='O')
{
while(*p!=' ')
p++;
p++;
r|=aand();
}
return r;
}
bool aand()
{
int r=valoare();
p++;
while(*p=='A')
{
while(*p!=' ')
p++;
p++;
r&=valoare();
}
return r;
}
bool valoare()
{
bool nr=false;
if(*p=='(')
{
p++;
return oor();
p++;
p++;
}
bool NOOT=false;
if(*p=='N')
{
char *p2 = p;
p2++;
if(*p2!=' ')
{
while(*p!=' ')
p++;
p++;
NOOT=true;
}
}
if(*p=='T')
{
char *p2=p;
p2++;
if(*p2!=' ')
{
while(isupper(*p))
p++;
if(*p!=')')
p++;
}
if(NOOT==true)
return false;
return true;
}
if(*p=='F')
{
char *p2=p;
p2++;
if(*p2!=' ')
{
while(isupper(*p))
p++;
if(*p!=')')
p++;
}
if(NOOT==true)
return true;
return false;
}
if(NOOT==true)
{
if(val[*p]==true)
nr=false;
if(val[*p]==false)
nr=true;
}
else
{
nr=val[*p];
}
p++;
if(*p!=')')
p++;
return nr;
}
int main()
{
f.getline(s,1000);
f>>n;
for(int i=1;i<=n;i++)
{
char ch;
f>>ch;
if(val[ch]==true)
val[ch]=false;
else
val[ch]=true;
p=s;
g<<oor();
}
g<<'\n';
return 0;
}