Cod sursa(job #3198357)

Utilizator maryyMaria Ciutea maryy Data 29 ianuarie 2024 00:40:18
Problema Bool Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>

using namespace std;
ifstream in("bool.in");
ofstream out("bool.out");
string s;
int i;
bool e[140];
bool termen(), factor();
bool expresie()
{
    bool r=termen();
    while(s[i]=='O' && s[i+1]=='R')
    {
        i+=2;
        r=(r|termen());
    }
    return r;
}
bool termen()
{
    bool r=factor();
    while(s[i]=='A' && s[i+1]=='N' && s[i+2]=='D')
    {
        i+=3;
        r=(r&factor());
    }
    return r;
}
bool factor()
{
    bool r;
    if(s[i]=='(')
    {
        i++;
        r=expresie();
        i++;
    }
    else if(s[i]=='N' && s[i+1]=='O' && s[i+2]=='T')
    {
        i+=3;
        r=1^(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
    {
        r=e[s[i]];
        i++;
    }
    return r;
}
int main()
{
    char ch;
    int nr;
    string c;
    getline(in, c);
    in>>nr;
    //scot spatiile
    for(int i=0; i<c.size(); i++)
    {
        if(c[i]!=' ')
            s+=c[i];
    }
    while(nr>0)
    {
        nr--;
        in>>ch;
        e[ch]=e[ch]^1;
        i=0;
        out<<expresie();
    }
}