Cod sursa(job #2336528)

Utilizator PopeangaMihneaPopeanga Mihnea- Stefan PopeangaMihnea Data 5 februarie 2019 10:51:40
Problema Bool Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("bool.in");
ofstream fout("bool.out");

bool expresie();
bool termen();
bool fact();

int n, i;
bool a[27];
char s[1001], ch;

int main()
{
    fin.getline(s, 1001);
    fin>>n;
    for(int q=1; q<=n; ++q)
    {
        fin>>ch;
        a[ch-'A']=!a[ch-'A'];
        i=0;
        fout<<expresie();
    }
    return 0;
}

bool expresie()
{
    bool r=termen();
    while(s[i]=='O' && s[i+1]=='R')
    {
        i=i+2;
        bool b=termen();
        r=(r||b);
    }
    return r;
}

bool termen()
{
    bool r=fact();
    while(s[i]=='A' && s[i+1]=='N')
    {
        i=i+3;
        bool b=fact();
        r=(r&&b);
    }
    return r;
}

bool fact()
{
    bool r=0;
    if(s[i]=='(')
    {
        ++i;
        r=expresie();
        ++i;
    }
    else if(s[i]=='F' && s[i+1]=='A')
    {
        i=i+6;
        r=0;
    }
    else if(s[i]=='T' && s[i+1]=='R')
    {
        i=i+5;
        r=1;
    }
    else
    {
        r=a[s[i]-'A'];
        ++i;
    }
    return r;
}