Cod sursa(job #2815938)

Utilizator AdrianRosuRosu Adrian Andrei AdrianRosu Data 10 decembrie 2021 17:19:27
Problema Bool Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<bits/stdc++.h>
#define DIM 1050
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
bool termen();
bool expresie();
bool factor();
bool valori[30];
char s[DIM], aux[DIM],c;
int i,j,n,poz;
int main(){
    fin.getline(aux,1000);
    for(j=0;j<=strlen(aux);j++){
        if(aux[j]!=' ')
                s[++poz]=aux[j];
    }
    fin>>n;
    for(j=1;j<=n;j++){
        fin>>c;
        i=1;
        valori[c-'A']=!valori[c-'A'];
        fout<<expresie();
    }
    return 0;
}
bool factor(){
bool r;
if(s[i]=='N'&&s[i+1]=='O'){
        i+=3;
    r=!(factor());
}
else if(s[i]=='T'&&s[i+1]=='R'){
    i+=4;
    r=true;
}
else if(s[i]=='F'&&s[i+1]=='A'){
    i+=5;
    r=false;
}
else if(s[i]=='('){
            i++;
            r=expresie();
            i++;
}

else {
    r=valori[s[i]-'A'];
    i++;
}
return r;
}
bool termen(){
bool r=factor();
while(s[i]=='A'&&s[i+1]=='N'){
    i+=3;
    r&=factor();
}
return r;
}
bool expresie(){
bool r=termen();
while(s[i]=='O'&&s[i+1]=='R'){
    i+=2;
    r|=termen();
}
return r;
}