Cod sursa(job #2923059)

Utilizator Theo14Ancuta Theodor Theo14 Data 11 septembrie 2022 12:55:55
Problema Bool Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<bits/stdc++.h>
using namespace std;

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

int fv[40],poz;
char s[1005];
char c;

bool sau();
bool si();
bool termen();

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

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

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

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