Cod sursa(job #1022091)

Utilizator usermeBogdan Cretu userme Data 4 noiembrie 2013 18:55:27
Problema Bool Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 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(){
    if ( s[p]=='N'&&s[p+1]=='O' ){p+=4;return !expresie();}
    if ( s[p]=='(' ){++p;return expresie();}
    if ( s[p]=='T'&&s[p+1]=='R' ){p+=4;return 1;}
    if ( s[p]=='F'&&s[p+1]=='A'){p+=5;return 0;}
    ++p;
    return v[s[p-1]];
}

bool expresie(){
    bool b=element();
    while ( s[p]==' ' ){
        ++p;
        if ( s[p]=='A'&&s[p+1]=='N' ){
            p+=4;
            b=b&element();
        }
        if ( s[p]=='O'&&s[p+1]=='R' ){
            p+=3;
            b=b|element();
        }
    }
    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;
}