Pagini recente » Cod sursa (job #283705) | Cod sursa (job #2055516) | Cod sursa (job #37863) | Cod sursa (job #762430) | Cod sursa (job #2457464)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
const int nmax = 1005;
int n, val[60], p;
char expresie[nmax + 5], v[110];
bool isOr();
bool isAnd();
bool getvar();
bool isOr()
{
bool r = isAnd();
while(expresie[p] == 'O' && expresie[p + 1] == 'R')
{
p += 3;
r = r|isAnd();
}
return r;
}
bool isAnd()
{
bool r = getvar();
while(expresie[p] == 'A' && expresie[p + 1] == 'N' && expresie[p + 2] == 'D')
{
p += 4;
r = r&getvar();
}
return r;
}
bool getvar()
{
bool r = false;
if(expresie[p] == 'N' && expresie[p + 1] == 'O' && expresie[p + 2] == 'T')
{
p += 4;
r = !getvar();
}
else if(expresie[p] == '(')
{
p++;
r = isOr();
p++;
}
else if(expresie[p] == 'T' && expresie[p + 1] == 'R' && expresie[p + 2] == 'U' && expresie[p + 3] == 'E')
{
p += 5;
r = true;
}
else if(expresie[p] == 'F' && expresie[p + 1] == 'A' && expresie[p + 2] == 'L' && expresie[p + 3] == 'S' && expresie[p + 4] == 'E')
{
p += 6;
r = false;
}
else
{
r = val[expresie[p] - 'A'];
p += 2;
}
return r;
}
int main()
{
fin.get(expresie, nmax + 5);
fin >> n;
fin.get();
fin.get(v, 105);
for(unsigned int i = 0; i < strlen(v); ++i)
{
val[v[i] - 'A'] = 1 - val[v[i] - 'A'];
p = 0;
fout << isOr();
}
fin.close();
fout.close();
return 0;
}