Cod sursa(job #2682184)

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

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

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

int termen();
int factor();

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

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

int factor()
{
    bool rez ;
    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))
                if(!isdigit(*(p+1)))
                {
                    rez=x[*p-'A'];
                    p+=2;
                }
            else
                if(*p=='T')
                   rez=1, p+=5;
                else
                    rez=0, p+=6;
        }

    return rez;
}

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

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

}