Pagini recente » Cod sursa (job #1836284) | Cod sursa (job #1881401) | Cod sursa (job #637236) | Cod sursa (job #1194390) | Cod sursa (job #2586204)
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
//ifstream cin("text.in"); ofstream cout("text.out");
ifstream cin("bool.in"); ofstream cout("bool.out");
bool val[300];
string s;
int i;
bool f1();
bool f2();
bool f3();
bool f4();
bool f1() { //OR
bool ans = f2();
while (i + 3 < s.size() && s[i] == ' ' && s[i + 1] == 'O' && s[i + 2] == 'R' && s[i + 3] == ' ') {
i += 4;
ans |= f2();
}
return ans;
}
bool f2() { //AND
bool ans = f3();
while (i + 4 < s.size() && s[i] == ' ' && s[i + 1] == 'A' && s[i + 2] == 'N' && s[i + 3] == 'D' && s[i + 4] == ' ') {
i += 5;
ans &= f3();
}
return ans;
}
bool f3() { //NOT
bool ans;
if (i + 3 < s.size() && s[i] == 'N' && s[i + 1] == 'O' && s[i + 2] == 'T' && s[i + 3] == ' ') {
i += 4;
ans = !f3();
}
else {
ans = f4();
}
return ans;
}
bool f4() { //TRUE, FALSE, paranteza, litera
bool ans;
if (s[i] == '(') {
i++;
ans = f1();
i++;
}
else if (i + 3 < s.size() && s[i] == 'T' && s[i + 1] == 'R' && s[i + 2] == 'U' && s[i + 3] == 'E') {
ans = 1;
i += 4;
}
else if (i + 4 < s.size() && s[i] == 'F' && s[i + 1] == 'A' && s[i + 2] == 'L' && s[i + 3] == 'S' && s[i + 4] == 'E') {
ans = 0;
i += 5;
}
else {
ans = val[s[i]];
i++;
}
return ans;
}
int main() {
getline(cin, s);
int n;
cin >> n;
char c;
while (n--) {
cin >> c;
val[c] = !val[c];
i = 0;
cout << f1();
}
return 0;
}