Cod sursa(job #1706234)

Utilizator Mihai9Oniga Mihai Mihai9 Data 21 mai 2016 22:43:57
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#define NMAX 1005
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int n, i;
char x[NMAX], ch, *p;
bool v[27],ev();
bool term(){
    bool b=0;
    if(*p=='(')p++,b=ev(),p++;
    else if(*p=='F'&&*(p+1)=='A') p+=6,b=0;
    else if(*p=='T'&&*(p+1)=='R') p+=5,b=1;
    else if(*p=='N'&&*(p+1)=='O') p+=4,b=!term();
    else b=v[*p-'A'],p+=2;
    return b;
}
bool fact(){
    bool b=term();
    while(*p=='A'&&*(p+1)=='N') p+=4,b=b&term();
    return b;
}
bool ev(){
    bool b=fact();
    while(*p=='O'&&*(p+1)=='R') p+=3,b=b|fact();
    return b;
}
int main(){
    fin.getline(x,NMAX);
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>ch,v[ch-'A']=!v[ch-'A'],p=x,fout<<ev();
    return 0;
}