Pagini recente » Cod sursa (job #1681699) | Cod sursa (job #1978511) | Cod sursa (job #1908637) | Cod sursa (job #1511919) | Cod sursa (job #2206547)
#include <bits/stdc++.h>
using namespace std;
char s[1005];
bool val[30];
string v;
int poz;
bool numar();
bool inm_imp();
bool evaluare()
{
bool nr = numar();
while (v[poz] == '&' || v[poz] == '|' || v[poz] == '~')
{
if (v[poz] == '&')
nr = (nr & numar());
else if (v[poz] == '|')
nr = (nr | numar());
else
{
poz++;
inm_imp();
}
poz++;
}
return nr;
}
bool numar()
{
bool nr;
if (v[poz] == '(')
{
poz++;
nr = evaluare();
poz++;
}
else if (v[poz] == '~')
{
poz++;
inm_imp();
poz++;
}
else
nr = val[(v[poz] - 'A')];
return nr;
}
bool inm_imp()
{
bool nr = numar();
return (~ nr);
}
int main()
{
ifstream fin("bool.in");
ofstream fout("bool.out");
int poz1 = 0,n;
char ch;
s[poz1] = ' ';
while (s[poz1] != '\n')
{
poz1++;
fin.get(s[poz1]);
}
for (int i = 0;i < poz1;i++)
{
if (s[i] == 'A' && s[i + 1] == 'N')
v += '&';
else if (s[i] == 'O' && s[i + 1] == 'R')
v += '|';
else if (s[i] == 'N' && s[i + 1] == 'O')
v += '~';
else if (s[i] >= 'A' && s[i] <= 'Z')
v += s[i];
else if (s[i] == '(' || s[i] == ')')
v += s[i];
}
fin >> n;
for (int i = 0;i < n;i++)
{
fin >> ch;
if (val[(ch - 'A')] == 0)
val[(ch - 'A')] = 1;
else
val[(ch - 'A')]= 0;
fout << evaluare();
}
return 0;
}