Cod sursa(job #2105086)

Utilizator PopeangaMihneaPopeanga Mihnea- Stefan PopeangaMihnea Data 12 ianuarie 2018 17:18:56
Problema Bool Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 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;
bool a[27];
char s[1001], ch, i;

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+3;
        r=r|termen();
    }
    return r;
}

bool termen()
{
    bool r=fact();
    while(s[i]=='A' && s[i+1]=='N')
    {
        i=i+4;
        r=r&fact();
    }
    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;
}