Cod sursa(job #1667516)

Utilizator Mr.RobotElliot Alderson Mr.Robot Data 28 martie 2016 23:17:59
Problema Bool Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;

ifstream f("bool.in");
ofstream g("bool.out");

char s1[1010],s2[1010];
bool  b[26];
int n, k, p,l;

bool f1();
bool f2();
bool f3();
bool f4();

bool f1()
{
    bool x;
    x = f2();

    while( p+1<k && s2[p] == 'O' && s2[p+1] == 'R' ){
        p = p + 2;
        x = x|f2();
    }

    return x;
}

bool f2()
{
    bool x;
    x = f3();

    while( p+2<k && s2[p] == 'A' && s2[p+1] == 'N' && s2[p+2] == 'D' ){
        p = p+3;
        x = x&f3();
    }

    return x;
}

bool f3()
{
    bool x;

    if( p+2<k && s2[p] == 'N' && s2[p+1] == 'O' && s2[p+2] == 'T'){
        p = p+3;
        x = f4();
        x = !x;
    }
    else{
        x = f4();
    }

    return x;
}

bool f4()
{
    bool x;

    if( s2[p] == '(' ){
        p++;
        x = f1();
        p++;
    }
    else{
        if( p+3<k && s2[p] == 'T' && s2[p+1] == 'R' && s2[p+2] == 'U' && s2[p+3] == 'E' ){
            x = true;
            p = p+4;
        }
        else if( p+4<k && s2[p] == 'F' && s2[p+1] == 'A' && s2[p+2] == 'L' && s2[p+3] == 'S' && s2[p+4] == 'E' ){
            x = false;
            p = p+5;
        }
        else{
            x = b[s1[p]-65];
            p++;
        }
    }
    return x;
}

int main()
{
    f.get(s1, 1000);
    f.get();

    l = strlen(s1);
    for( int i = 0; i < l; i ++ )
        if( s1[i] != ' ' )
            s2[k++] = s1[i];
    s2[k] = '\0';
    f >> n;
    f >> s1;
    for( int i = 0; i < n; i ++ ){
        p = 0;
        b[s1[i]-65] = !b[s1[i]-65];
        g<<f1();

    }

    return 0;
}