Cod sursa(job #1456214)

Utilizator adina0822Ciubotaru Adina-Maria adina0822 Data 30 iunie 2015 00:37:13
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
using namespace std;
#include <fstream>
ifstream f("bool.in");
ofstream g("bool.out");

char s[1010],s2[102],al[30], *p=s;
int n;

int sau();
int si();
int eval();
void erase()
{
    while(*p==' ') p++;
}

int eval()
{
    erase();
    int sol=0;
    if(*p=='N' && *(p+1)=='O')
    {
        p+=3;
        sol=1-eval();
    }
    else if(*p=='(')
    {
        p++;
        sol=sau();
        p++;
    }
    else if(*p=='T' && *(p+1)=='R')
    {
        p+=4;
        sol=1;
    }
    else if(*p=='F' && *(p+1)=='A')
    {
        p+=5;
        sol=0;
    }
    else
    {
        sol=al[*p-'A'];
        p++;
    }
    erase();
    return sol;
}


int si()
{
    erase();
    int sol=eval();
    while(*p=='A' && *(p+1)=='N')
    {
        p+=3;
        sol&=eval();
    }
    erase();
    return sol;
}

int sau()
{
    erase();
    int sol=si();
    while(*p=='O' && *(p+1)=='R')
    {
        p+=2;
        sol|=si();
    }
    erase();
    return sol;
}

int main()
{
    int i;
    f.getline(s,1010);
    f>>n;
    f.get();
    f.getline(s2,102);
    for(i=0; i<n; i++)
    {
        al[s2[i]-'A']=1-al[s2[i]-'A'];
        g<<sau();
        p=s;
    }

}