Pagini recente » Cod sursa (job #1610491) | Cod sursa (job #2549067) | Cod sursa (job #605208) | Cod sursa (job #2633157) | Cod sursa (job #2528865)
#include <fstream>
using namespace std;
char a[1010];
char b[1010];
int f[110];
char c;
int i,n,u;
void esteOperator() {
if (a[i]=='A'&&a[i+1]=='N') {
i+=3;
b[u++]='&';
}
else if (a[i]=='O'&&a[i+1]=='R') {
i+=2;
b[u++]='|';
}
else if (a[i]=='N'&&a[i+1]=='O') {
i+=3;
b[u++]='!';
}
else if (a[i]=='T'&&a[i+1]=='R') {
b[u++]='1';
i+=4;
}
else if (a[i]=='F'&&a[i+1]=='A') {
b[u++]='0';
i+=5;
}
else if (a[i]=='('||a[i]==')'||isupper(a[i])) {
b[u++]=a[i];
i++;
}
else i++;
}
int Expresie();
int Termen();
int Factor();
int Factor1();
int main() {
ifstream fin("bool.in");
ofstream fout("bool.out");
fin.get(a,1010);
while (a[i]!=0) {
esteOperator();
}
i=0;
// fout<<b;
fin>>n;
while(n--) {
fin>>c;
f[c-'A'+1]=1-f[c-'A'+1];
i=0;
fout<<Expresie();
}
return 0;
}
int Expresie() {
int r=Termen();
while (b[i]=='|') {
i++;
int n=Termen();
if (r==1||n==1) r=1;
else r=0;
}
return r;
}
int Termen() {
int r=Factor();
while (b[i]=='&') {
i++;
int n=Factor();
if (r==1&&n==1) r=1;
else r=0;
}
return r;
}
int Factor() {
int r=0;
if (b[i]=='!') {
i++;
r=1-Factor1();
}
else {
i++;
r=Factor1();
}
return r;
}
int Factor1() {
int r;
if (isupper(b[i])) {
r=f[b[i]-'A'+1];
i++;
}
else if (isdigit(b[i])) {
r=b[i]-'0';
i++;
}
else if (b[i]=='(') {
i++;
r=Expresie();
i++;
}
return r;
}