Cod sursa(job #1322914)

Utilizator Eman98Ghinea Mihail Emanuel Eman98 Data 20 ianuarie 2015 15:19:40
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
int n,i;
char S[1005],*p=S,ch,v[1005];
bool or_();
bool and_();
bool termen() {
    bool b=0;
    if(*p=='(')
    {
        p++;
        b=or_();
        p++;
    }
    else if(*p=='F' and *(p+1)=='A')
    {
        p+=6;
        b=0;
    }
    else if(*p=='T' and *(p+1)=='R')
    {
        p+=5;
        b=1;
    }
    else if(*p=='N' and *(p+1)=='O')
    {
        p+=4;
        b=!termen();
    }
    else
    {
        b=v[*p-'A'];
        p+=2;
    }
    return b;
}
bool and_() {
    bool b=termen();
    while(*p=='A' and *(p+1)=='N')
    {
        p+=4;
        b=b & termen();
    }
    return b;
}
bool or_()
 {
    bool b=and_();
    while(*p=='O' and *(p+1)=='R')
    {
        p+=3;
        b=b | and_();
    }
    return b;
}
int main() {
    cin.getline(S,1005);
    cin>>n;
    for(i=1;i<=n;i++)
        {
            cin>>ch;
            v[ch-'A']=!v[ch-'A'];
            p=S;
            cout<<or_();
        }
    return 0;
}