Pagini recente » Cod sursa (job #2293686) | Cod sursa (job #767909) | Cod sursa (job #49781) | Cod sursa (job #3000760) | Cod sursa (job #1576382)
#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;
}