Cod sursa(job #2223822)

Utilizator NashikAndrei Feodorov Nashik Data 21 iulie 2018 16:59:38
Problema Bool Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
char sir[105];
bool variabile[26];
int N;
bool sol;
bool evalO(char* &sir);
bool evalX(char* &sir)
{
    bool answer;
    if(sir[0]=='('){
        sir++;
        answer=evalO(sir);
        sir++;
    }
    else
        if(sir[0]=='T' and sir[1]=='R'){
        sir+=4;
        answer=1;
    }
    else
        if(sir[0]=='F' and sir[1]=='A'){
        sir+=5;
        answer=0;
    }
    else{
        answer=variabile[sir[0]-'A'];
        sir+=4;
    }
    return answer;
}
bool evalN(char* &sir)
{
    if(sir[0]=='N' and sir[1]=='O'){
        sir+=4;
        return !evalN(sir);
    }
    else{
        return evalX(sir);
    }
}
bool evalE(char* &sir)
{
    bool answer=evalN(sir);
    if(sir[0]==' ' and sir[1]=='A' and sir[2]=='N'){
        sir+=5;
        answer&=evalE(sir);
    }
    return answer;
}
bool evalO(char* &sir)
{
    bool answer=evalE(sir);
    if(sir[0]==' ' and sir[1]=='O' and sir[2]=='R'){
        sir += 4;
        answer |= evalO(sir);
    }
    return answer;
}
int main()
{
    int i;
    char c;
    char* pozitie;
    gets(sir);
    cin>>N;
    cin.get();
    for (i=0;i<N;i++){
        cin>>c;
        variabile[c-'A']=!variabile[c-'A'];
        pozitie=sir;
        sol=evalO(pozitie);
        cout<<sol;
    }
    return 0;
}