Cod sursa(job #2271189)

Utilizator BogdanGhGhinea Bogdan BogdanGh Data 28 octombrie 2018 11:08:43
Problema Bool Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;
char c[1005],*p,a;
bool b[300];
int n,i;
int eval();
int termen();
int factor()
{
    int r=0;
    if(*p=='(')
    {
        p++;
        r=eval();
        p++;}
    else if(*p=='T'&&*(p+1)=='R')
        {r=1;p+=5;}
        else if(*p=='F'&&*(p+1)=='A')
        {r=0;p+=6;}
    else {r=b[*p];p+=2;}
    return r;
}
int termen()
{
    int r;
    while((*p=='A'&&*(p+1)=='N')||(*p=='N'&&*(p+1)=='O'))
    {if(*p=='N'&&*(p+1)=='O')
      {
          p+=4;
          r=factor();
          r=!r;
      }
      else r=factor();
   if((*p=='A'&&*(p+1)=='N'))
    {

        if(*p=='A'&&*(p+1)=='N')
        r=r&factor();
        p+=4;
    }}
    return r;

}
int eval()
{
   int r=termen();
   while(*p=='O'&&*(p+1)=='R')
    {
        r=r|termen();
        p+=3;
    }
   return r;
}


ifstream f("bool.in");
ofstream g("bool.out");
int main()
{
    f.getline(c,1003);
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a;
        p=c;
        b[a]=!b[a];
        g<<eval();
    }
    return 0;
}