Cod sursa(job #979879)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 3 august 2013 02:59:01
Problema Bool Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <string>

using namespace std;

ifstream fin("bool.in");
ofstream fout("bool.out");

char c;
string s;
int status[30];
int i,n;

int pr2(); int pr3(); int pr4();

int pr1 ()
{
    while (s[i]==' ') ++i;

    int res = pr2 ();
    while (s[i]=='O'&&s[i+1]=='R')
    {
        i+=2;
        res  |= pr2();
    }
    return res;
}

int pr2 ()
{
    while (s[i]==' ') ++i;

    int res = pr3 ();
    while (s[i]=='A'&&s[i+1]=='N')
    {
        i+=3;
        res &= pr3();
        ++i;
    }
    return res;
}

int pr3 ()
{
    while (s[i]==' ') ++i;

    if (s[i]=='(')
    {
        ++i;
        int res = pr1();
        ++i;
        return res;
    }

    if (s[i]=='N' && s[i+1]=='O') {i+=3; return !pr3();}
    if (s[i]=='T' && s[i+1]=='R') {i+=4; return 1;}
    if (s[i]=='F' && s[i+1]=='A') {i+=5; return 0;}
    ++i; return status [s[i-1]-'A'];
}

int main()
{
     getline (fin,s);

     fin>>n;

     for (int j=1; j<=n; j++)
     {
         fin>>c;
         status [c-'A'] = status[c-'A']^1;
         i=0;
         fout<< pr1();
     }
}