Cod sursa(job #3212146)

Utilizator Bianca2507Negret Bianca Bianca2507 Data 11 martie 2024 10:50:51
Problema Bool Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");

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

char c[1005],s[1005],ch;
int n,i,n1,fr[30];

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

}
bool termen()
{
    bool r=factor();
    while(s[i]=='A'&&s[i+1]=='N'&&s[i+2]=='D')
    {
        i+=3;
        r=r&factor();
    }
    return r;
}
bool factor()
{
    bool r;
    if(s[i]=='(')
    {
        i++;
        r=expresie();
        i++;
    }
    else if(s[i]=='T'&&s[i+1]=='R'&&s[i+2]=='U')
    {
        i+=4;
        r=1;
    }
    else if(s[i]=='F'&&s[i+1]=='A'&&s[i+2]=='L')
    {
        i+=5;
        r=0;
    }
    else if(s[i]=='N'&&s[i+1]=='O'&&s[i+2]=='T')
    {
        i+=3;
        r=!factor();
    }
    else
    {
        r=fr[s[i]-'A'];
        i++;
    }
    return r;
}
int main()
{
    cin.getline(c,1005);
    for(int i=0; c[i]!=0; i++)
    {
        if(c[i]!=' ')
            s[n1++]=c[i];
    }

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