Pagini recente » Cod sursa (job #1740670) | Cod sursa (job #646866) | Cod sursa (job #180623) | Cod sursa (job #1920265) | Cod sursa (job #2208097)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bool.in");
ofstream fout ("bool.out");
int f[28], n;
string s;
char ch;
bool Expresie(char* &s);
void skipspaces (char* &s) {
while (*s == ' ')
s++;
}
bool Termen(char* &s) {
if ((*s == 'T' && *(s + 1) == 'R' && *(s + 2) == 'U' && *(s + 3) == 'E')) {
s += 4;
return 1;
}
else if (*s == 'F' && *(s + 1) == 'A' && *(s + 2) == 'L' && *(s + 3) == 'S' && *(s + 4) == 'E') {
s += 5;
return 0;
}
else if (*s == '(') {
s++;
Expresie(s);
s++;
}
else
return f[*s - 'A'];
}
bool Not (char* &s) {
if (*s == 'N' && *(s + 1) == 'O' && *(s + 2) == 'T') {
skipspaces(s);
return 1 - Termen(s);
}
else
return Termen(s);
}
bool ands (char* &s) {
bool val = Not(s);
skipspaces(s);
while (*s == 'A' && *(s + 1) == 'N' && *(s + 2) == 'D') {
s += 3;
skipspaces(s);
val &= Not(s);
}
return val;
}
bool Expresie (char* &s) {
bool val = ands(s);
skipspaces(s);
while (*s == 'O' && *(s + 1) == 'R') {
s += 2;
skipspaces(s);
val |= ands(s);
}
return val;
}
int main()
{
while (fin.get(ch) && ch != '\n')
s += ch;
fin >> n;
for (int i = 1; i <= n; i++) {
fin >> ch;
f[ch - 'A'] = 1 - f[ch - 'A'];
char *sir = &s[0];
fout << Expresie(sir);
}
return 0;
}