Cod sursa(job #1576382)

Utilizator SirStevensIonut Morosan SirStevens Data 22 ianuarie 2016 12:47:28
Problema Bool Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <bits/stdc++.h>

using namespace std;

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

bool p;
int n;
string s;
char k,*p=s;

stack <bool> num;
stack <char> op;

void Adunare();
void Inmultire();
void Valuare();

void Adunare()
{
    bool x=Inmultire();
    while(*p == '|' )
    {
        p++;
        x|=Inmultire();
    }
}

void Inmultire()

{
    bool x=Valuare();
    while(*p == '&')
    {
        p++
        x&=Valuare();
    }
}

void Valuare()
{
    bool x=0;
    while(*p == '!')
    {
        p++;
    }
}

int main()
{
    getline(in,s);
    for(int i=0 ; i< s.size();i++)
    {
        if(s[i] == ' ')
            s.erase(s.begin() + i);
        if(s[i] == 'A' && s[i+1] == 'N')
            s[i]='&',s.erase(s.begin()+i, s.begin()+ i+3);
        if(s[i] == 'O' && s[i+1] == 'R')
            s[i]='|',s.erase(s.begin()+i, s.begin()+ i+2);
        if(s[i] == 'N' && s[i+1] == 'O')
            s[i]= '!', s.erase(s.begin()+i, s.begin()+i+3);
        if(s[i] == 'T' && s[i+1] == 'R')
            s[i]='t',s.erase(s.begin()+i, s.begin()+i+4);
        if(s[i]=='F' && s[i+1] == 'A')
            s[i]='f',s.erase(s.begin()+i, s.begin()+i+5);


    }

    x['t']=1;
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>k;
        x[k]=!x[k];
        while(num.size())
            num.pop();
        out<<Adunare();
    }


    return 0;
}