Cod sursa(job #2105618)

Utilizator dariastanescuDaria Stanescu dariastanescu Data 13 ianuarie 2018 19:09:28
Problema Bool Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <cstring>

using namespace std;

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

char s[1001],ch;
short n,i;
bool ok[91];
bool si();
bool nu();

bool sau()
{
    bool r;
    r=si();
    while(s[i]=='O' && s[i+1]=='R')
    {
        i=i+3;
        r=r|si();
    }
    return r;
}
bool si()
{
    bool r;
    r=nu();
    while(s[i]=='A' && s[i+1]=='N')
    {
        i=i+4;
        r=r&nu();
    }
    return r;
}
bool nu()
{
    bool r;
    if(s[i]=='(')
    {
        i++;
        r=sau();
        i++;
    }
    else if(s[i]=='T' && s[i+1]=='R')
    {
        i=i+5;
        r=1;
    }
    else if(s[i]=='F' && s[i+1]=='A')
    {
        i=i+6;
        r=0;
    }
    else if(s[i]=='N' && s[i+1]=='O')
    {
        i=i+4;
        r=!nu();
    }
    else if(s[i]>='A' && s[i]<='Z')
        {
            i=i+2;
            r=ok[int(s[i])];
        }
    return r;
}
int main()
{
    for(i=65;i<=90;++i) ok[i]=0;
    f.getline(s,1001);
    f>>n;
    for(short j=1;j<=n;++j)
    {
        f>>ch;
        ok[int(ch)]=!ok[int(ch)];
        i=0;
        g<<sau();
    }
  return 0;
}