Cod sursa(job #2391338)

Utilizator dimi999Dimitriu Andrei dimi999 Data 28 martie 2019 19:25:06
Problema Bool Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <bits/stdc++.h>
using namespace std;

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

char s[1005];
int fv[30];
int poz;

bool sau();
bool si();

bool termen()
{
    bool rez=0;
    if(s[poz]=='(')
    {
        poz++;
        rez=sau();
        poz++;
    }
    else
        if(s[poz]=='N'&&s[poz+1]=='O')
    {
        poz+=4;
        rez=!termen();
    }
        else
    if(s[poz]=='T'&&s[poz+1]=='R')
    {
        poz+=5;
        rez=1;
    }
    else
        if(s[poz]=='F'&&s[poz+1]=='A')
    {
        poz+=6;
        rez=0;
    }
    else
    {
        poz+=2;
        rez=fv[s[poz-2]-'A'];
    }
    return rez;
}

bool sau()
{
    bool rez=si();
       if(s[poz]=='O'&&s[poz+1]=='R')
    {
        poz+=3;
        rez=(rez|si());
    }
    return rez;
}

bool si()
{
    bool rez=termen();
        if(s[poz]=='A'&&s[poz+1]=='N')
    {
        poz+=4;
        rez=(rez&termen());
    }
    return rez;
}

int main()
{
    char c;
    int n,i;
    fin.getline(s,1000);
    //fin.get();
    fin>>n;
    fin.get();
    for(i=1;i<=n;i++)
    {
        fin>>c;
        if(fv[c-'A']==0)
            fv[c-'A']=1;
        else
            fv[c-'A']=0;
        poz=0;
        fout<<sau();
    }
    return 0;
}