Pagini recente » Cod sursa (job #1974206) | Cod sursa (job #3141051) | Cod sursa (job #2727823) | Cod sursa (job #3215457) | Cod sursa (job #3192702)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
map<char,bool>ma;
string s;
char p[1005];
int pos;
void create()
{
for(int i=0; p[i];i++)
{
if(p[i]>='A' && p[i]<='Z' && p[i+1]==' ')
s.push_back(p[i]);
if(p[i]=='T' && p[i+1]=='R')
{
s.push_back('1');
i+=4;
}
if(p[i]=='F' && p[i+1]=='A')
{
s.push_back('0');
i+=5;
}
if(p[i]=='N' && p[i+1]=='O')
{
s.push_back('!');
i+=3;
}
if(p[i]=='A' && p[i+1]=='N')
{
s.push_back('&');
i+=3;
}
if(p[i]=='O' && p[i+1]=='R')
{
s.push_back('|');
i+=2;
}
if(p[i]=='(' || p[i]==')')
s.push_back(p[i]);
}
}
bool OR();
bool AND();
bool exp();
bool OR()
{
bool t = AND();
while(s[pos]=='|')
{
pos++;
bool p = AND();
t = (p || t);
}
return t;
}
bool AND()
{
bool t = exp();
while(s[pos]=='&')
{
pos++;
bool p = exp();
t = (p && t);
}
return t;
}
bool exp()
{
bool res = 0;
if(s[pos]=='(')
{
pos++;
res = OR();
pos++;
}
else if(s[pos]=='!')
{
pos++;
res = !exp();
}
else
{
if(s[pos]=='1' || s[pos]=='0')
res=s[pos]-'0';
else
res=ma[s[pos]];
pos++;
}
return res;
}
int main()
{
fin.getline(p,1005);
create();
int n;
fin>>n;
for(int i=0;i<n;i++)
{
pos = 0;
char X;
fin>>X;
ma[X]=!ma[X];
fout<<OR();
}
return 0;
}