Cod sursa(job #1307166)

Utilizator VictoriaNevTascau Victoria VictoriaNev Data 1 ianuarie 2015 14:51:16
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#define NMAX 1005
using namespace std;
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()
{
    ifstream cin("bool.in");
    ofstream cout("bool.out");
    cin.getline(x,NMAX);
    cin>>n;
    for(i=1; i<=n; i++)
        cin>>ch,v[ch-'A']=!v[ch-'A'],p=x,cout<<ev();
    return 0;
}