Cod sursa(job #1023227)

Utilizator usermeBogdan Cretu userme Data 6 noiembrie 2013 17:34:29
Problema Bool Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>

FILE*f=fopen("bool.in","r");
FILE*h=fopen("bool.out","w");

int n,p;

bool v[251];

char s[1005],c;

bool expresie();

bool element(){
    bool k;
    if ( s[p]=='(' ){++p;k=expresie();++p;}
        else if ( s[p]=='T'&&s[p+1]=='R' ){p+=5;k=1;}
            else if ( s[p]=='F'&&s[p+1]=='A'){p+=6;k=0;}
                else if ( s[p]=='N'&&s[p+1]=='O' ){p+=4;k=!element();}
                    else {k=v[s[p]];p+=2;}
    return k;
}

bool termen(){
    bool b=element();
    while ( s[p]=='A'&&s[p+1]=='N' ){p+=4;b=b&element();}
    return b;
}

bool expresie(){
    bool b=termen();
    if ( s[p]=='O'&&s[p+1]=='R' ){
        p+=3;
        b=b|termen();
    }
    return b;
}
int main()
{
    fgets(s,1001,f);
    fscanf(f,"%d",&n);
    fscanf(f,"%c",&c);
    for ( int i=1;i<=n;++i ){
        p=0;
        fscanf(f,"%c",&c);
        if ( v[c]==1 )v[c]=0;
        else v[c]=1;
        fprintf(h,"%d",expresie());
    }
    return 0;
}