Cod sursa(job #2682181)

Utilizator cameleonGeorgescu Dan cameleon Data 7 decembrie 2020 23:15:41
Problema Bool Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#define NMAX 1005
using namespace std;

ifstream cin("bool.in");
ofstream cout("bool.out");

char s[NMAX], v[105],*p;
int x[105], n;

int termen();
int factor();

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

int termen()
{
    int rez = factor();
    while(*p=='A' && *(p+1)=='N' && *(p+2)=='D')
    {
        p+=4;
        rez=rez && factor();
    }
    return rez;
}

int factor()
{
    int rez = 0;
    if(*p=='N' && *(p+1)=='O' && *(p+2)=='T')
    {
       p+=4;
       rez=!(factor());
    }
    else
        if(*p=='(')
           p++,rez=eval(),p+=2;
        else
        {
            if(isalpha(*p))
            {
                rez=x[*p-'A'];
                p+=2;
            }
        }

    return rez;
}

int main()
{
    cin.getline(s,1005);

    cin >> n;
    cin >> v;
    for(char *p1=v;*p1!=0;p1++)
    {
        x[*p1-'A']=1-x[*p1-'A'];
        p=s;
        cout<<eval();
    }

}