Pagini recente » Cod sursa (job #2204279) | Cod sursa (job #2065790) | Cod sursa (job #2819438) | Cod sursa (job #476715) | Cod sursa (job #2950304)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int N = 1e4 + 1;
char cs[N];
char s[N];
void modif(){
int pl = 0;
int cnt = 0;
int len = strlen(cs);
while(pl < len){
if(cs[pl] == ' ')
pl++;
else if(cs[pl] == 'A' && pl + 2 < len && cs[pl + 1] == 'N' && cs[pl + 2] == 'D'){
s[cnt++] = '&';
pl += 3;
}else if(cs[pl] == 'O' && pl + 1 < len && cs[pl + 1] == 'R'){
s[cnt++] = '|';
pl += 2;
}else if(cs[pl] == 'N' && pl + 2 < len && cs[pl + 1] == 'O' && cs[pl + 2] == 'T'){
s[cnt++] = '!';
pl += 3;
}else if(cs[pl] == 'T' && pl + 3 < len && cs[pl + 1] == 'R' && cs[pl + 2] == 'U' && cs[pl + 3] == 'E'){
s[cnt++] = '1';
pl += 4;
}else if(cs[pl] == 'F' && pl + 4 < len && cs[pl + 1] == 'A' && cs[pl + 2] == 'L' && cs[pl + 3] == 'S' && cs[pl + 4] == 'E'){
s[cnt++] = '0';
pl += 5;
}else{
s[cnt++] = cs[pl];
pl++;
}
}
}
bool vars[30];
int p = 0;
bool expresie();
bool termen();
bool factor();
bool expresie(){
bool rez = termen();
while(s[p] == '|'){
p++;
rez = rez || termen();
}
return rez;
}
bool termen(){
bool rez = factor();
while(s[p] == '&'){
p++;
rez = rez && factor();
}
return rez;
}
bool factor(){
bool semn = true;
bool rez = false;
while(s[p] == '!'){
p++;
semn = !semn;
}
if(s[p] == '('){
p++;
rez = expresie();
p++;
if(semn)
return rez;
return !rez;
}
if(s[p] == '0')
rez = false;
else if(s[p] == '1')
rez = true;
else if(s[p] >= 'A' && s[p] <= 'Z')
rez = vars[s[p] - 'A'];
p++;
if(semn)
return rez;
return !rez;
}
int main()
{
ifstream fin("bool.in");
ofstream fout("bool.out");
fin.getline(cs, N);
modif();
int n;
fin >> n;
for(int i = 0; i < n; i++){
p = 0;
char c;
fin >> c;
vars[c - 'A'] = !vars[c - 'A'];
fout << expresie();
}
return 0;
}