Cod sursa(job #1729288)

Utilizator otnielMercea Otniel otniel Data 14 iulie 2016 15:43:19
Problema Bool Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
bool a[26];
char expr[1005];
int lung;
int n;
int i;
bool eval();
bool evalfact();
bool evalterm();
bool evalexpr();
bool eval()
{
    return a[expr[i]-65];
}
bool evalfact()
{
    bool f;
    if(a[i]=='(')
    {
        i++;
        f=evalexpr();
        i=i+2;
    }
    else
        if(a[i]=='N'||a[i+1]=='O'||a[i+2]=='T')
        {
            f=!eval();
            i=i+4;
        }
        else
        {
        f=eval();
        i++;
        }
    return f;
}
bool evalterm()
{
    bool f=evalfact();

    while(i<lung&&a[i]=='A'&&a[i+1]=='N'&&a[i+2]=='D')
    {
        i=i+4;
        f=f&&evalfact();
    }
return f;
}

bool evalexpr()
{
    bool f=evalterm();

    while(i<lung&&a[i]=='O'&&a[i+1]=='R')
    {
        i=i+3;
        f=f||evalterm();
    }
    return f;
}
int main()
{
    ifstream f("bool.in");
    ofstream g("bool.out");
    f.get(expr,1000);
    lung=strlen(expr);
    f>>n;
    for(int j=0;j<n;j++)
    {
        char c;
        f>>c;
        a[c-65]=!a[c-65];
        i=0;
        g<<evalexpr();

    }
}