Cod sursa(job #1959658)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 9 aprilie 2017 19:24:59
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>

using namespace std;
int n,p,i;
char q,s[1001];
bool v[128];
bool E();
bool T()
{
    if(s[p]=='N'&&s[p+1]=='O')
    {
        p+=3;
        return !T();
    }
    else if(s[p]=='T'&&s[p + 1]=='R' )
    {
        p+=4;
        return true;
    }
    else if(s[p]=='F'&&s[p+1]=='A')
    {
        p+=5;
        return false;
    }
    else if (s[p]=='(')
    {
        p++;
        bool t=E();
        p++;
        return t;
    }
    else
    {
        bool t=v[s[p]];
        p++;
        return t;
    }
}
bool F()
{
    bool t=T();
    while(s[p]=='A'&&s[p + 1]=='N')
    {
        p+=3;
        t&=T();
    }
    return t;
}
bool E()
{
    bool t=F();
    while(s[p]=='O'&&s[p+1]=='R')
    {
        p+=2;
        t|=F();
    }
    return t;
}
int main()
{
    ifstream f("bool.in");
    ofstream g("bool.out");
    noskipws(f);
    f>>s[p];
    while(s[p]!='\n')
    {
        p+=(s[p]!=' ');
        f>>s[p];
    }
    skipws(f);
    f>>n;
    for(i=0; i<n; i++)
    {
        f>>q;
        v[q]^=1;
        p=0;
        g<<E();
    }
    f.close(); g.close();
    return 0;
}