Pagini recente » Cod sursa (job #308363) | Cod sursa (job #2532094) | Cod sursa (job #1124115) | Cod sursa (job #2463035) | Cod sursa (job #626398)
Cod sursa(job #626398)
#include <fstream>
using namespace std;
ifstream in ("bool.in");
ofstream out ("bool.out");
const int N = 1003;
char s[N], *p, c;
bool valoare[40];
int n;
bool expresie(),factor(),termen();
bool expresie () {
bool rez = factor ();
while (*p == 'A' && *(p+1) == 'N') {
p += 4;
rez = rez && factor ();
}
return rez;
}
bool factor () {
bool rez = termen ();
while (*p == 'O' && *(p+1) == 'R') {
p += 3;
rez = rez || termen ();
}
return rez;
}
bool termen () {
bool val, semn = true;
if (*p == 'N' && *(p+1) == 'O') {
semn = false;
p+=4;
}
if (*p == '(') {
++p;
val = expresie ();
p+=2;
if (semn) return val;
else return not val;
}
val = valoare[*p - 'A'];
p += 2;
if (semn) return val;
else return not val;
}
void citire () {
in.getline (s,N);
in >> n >> ws;
for (;n--;) {
p = s;
in >> c;
valoare[c-'A'] = 1;
out << expresie ();
valoare[c-'A'] = 0;
}
}
int main (){
citire();
return 0;
}