Cod sursa(job #2523227)

Utilizator AnduebossAlexandru Ariton Andueboss Data 13 ianuarie 2020 20:47:26
Problema Bool Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.81 kb
//
//  main.cpp
//  Evaluare
//
//  Created by Andu Andu on 13/01/2020.
//  Copyright © 2020 Andu Andu. All rights reserved.
//

/*#include <fstream>
#include <string>

using namespace std;

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

char termeni[100003];
char *p=termeni;
long oi();
long paranteze();
long pm () {
    long r = oi();
    while (*p=='+' || *p=='-') {
        if (*p=='+') {
            ++p;
            r+=oi();
        } else if (*p=='-') {
            ++p;
            r-=oi();
        }
    }
    return r;
}

long oi() {
    long r = paranteze();
    while (*p=='*' || *p=='/') {
        if (*p=='*') {
            ++p;
            r*=paranteze();
        } else if (*p=='/') {
            ++p;
            r/=paranteze();
        }
    }
    return r;
}

long paranteze() {
    long r = 0;
    if (*p=='(') {
        ++p;
        r=pm();
        ++p;
    } else {
        while ( *p>='0' && *p<='9' )  {
            r = r*10 + *p - '0';
            ++p;
        }
    }
    return r;
}

int main(int argc, const char * argv[]) {
    f>>termeni;
    g<<pm();
    return 0;
}*/
#include <fstream>
using namespace std;
ifstream f ("bool.in");
ofstream g ("bool.out");
int n,i;
char s[1005],c,*p;
bool v[27],ev();
bool elem()
{
    bool b=0;
    if(*p=='(') {p++;b=ev();p++;}
    else if(*p=='F'&&*(p+1)=='A') {p+=6;b=0;}
    else if(*p=='T'&&*(p+1)=='R') {p+=5,b=1;}
    else if(*p=='N'&&*(p+1)=='O') {p+=4,b=!elem();}
    else {b=v[*p-'A'];p+=2;}
    return b;
}
bool nd()
{
    bool b=elem();
    while(*p=='A'&&*(p+1)=='N') p+=4,b=b&elem();
    return b;
}
bool ev()
{
    bool b=nd();
    while(*p=='O'&&*(p+1)=='R') p+=3,b=b|nd();
    return b;
}
int main()
{
    f.getline(s,1005);
    f>>n;
    for(i=1;i<=n;++i)
    {
        f>>c;
        v[c-'A']=!v[c-'A'];
        p=s;
        g<<ev();
    }
    return 0;
}