Cod sursa(job #3139141)

Utilizator Bianca2507Negret Bianca Bianca2507 Data 25 iunie 2023 16:34:40
Problema Bool Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
int n,i,fr[35],l,k,j;
char c[1005],s[1005],x;

bool expresie();
bool termen();
bool factor();

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

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

bool factor()
{
   bool r;
    if(c[i]=='(')
    {
        i++;
        r=expresie();
        i++;
    }
    else
        if(c[i]=='N'&& c[i+1]=='O')
    {
        i=i+3;
        r = !(factor());
    }
    else
        if(c[i]=='T'&&c[i+1]=='R')
    {
        i=i+4;
    r=true;
    }
    else
        if(c[i]=='F'&&c[i+1]=='A')
    {
        i=i+5;
        r=false;
    }
    else
    {
        r=fr[c[i]-'A'];
        i++;
    }
    return r;
}
int main()
{
    cin.get(s,1005);
    cin.get();
    for(i=0;i<strlen(s);i++)
        if(s[i]!=' ')
        c[l++]=s[i];

    cin>>n;
    for(i=0;i<=30;i++)
        fr[i]=0;
    for(j=1;j<=n;j++)
    {
        cin>>x;
        fr[x-'A']=1-fr[x-'A'];
        i=0;
        cout<<expresie();
    }

    return 0;
}