Pagini recente » Cod sursa (job #2975512) | Cod sursa (job #1195578) | Cod sursa (job #3208627) | Cod sursa (job #500171) | Cod sursa (job #1741559)
#include<fstream>
#include<string.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int t[256],val,i,n,j,l;
char s[1001],modif[101];
int evalExp();
int evalTerm();
int evalFact();
int eval(){
int val,aux;
if ('A'<=s[i] && s[i]<='Z' && (s[i+1]=='(' || s[i+1]==')' || s[i+1]==' ')){
val=t[(int)s[i]];
i=i+1;
while(s[i]==' ' && i<l) i++;
return val;
}
if (i==l-1 && 'A'<=s[i] && s[i]<='Z' && s[i-1]==' ') {
aux=i;i++;
while(s[i]==' ' && i<l) i++;
return t[(int)s[aux]];
}
if (l==1 && 'A'<=s[0] && s[0]<='Z'){
i++;
return t[(int)s[0]];
}
if (s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E') {
i=i+4;
while(s[i]==' ' && i<l) i++;
return 1;
}
if (s[i]=='F' && s[i+1]=='A' && s[i+2]=='L' && s[i+3]=='S' && s[i+4]=='E') {
i=i+5;
while (s[i]==' ' && i<l) i++;
return 0;
}
}
int evalFact(){
int val;
if (s[i]=='('){
i++;
val=evalExp();
i++;
while(s[i]==' ' && i<l) i++;
}
else
if (s[i]=='N' && s[i+1]=='O' && s[i+2]=='T'){
i=i+4;
val=evalExp();
if (val==0) val=1;
else
val=0;
}
else{
val=eval();
}
return val;
}
int evalTerm(){
int val=evalFact(),vali;
while(s[i]=='A' && s[i+1]=='N' && s[i+2]=='D' && i<l){
i=i+4;
vali=evalFact();
if (val==1 && vali==1) val=1;
else
val=0;
}
return val;
}
int evalExp(){
int val=evalTerm(),vali;
while(s[i]=='O' && s[i+1]=='R' && i<l){
i=i+3;
vali=evalTerm();
if (vali==1 || val==1) val=1;
else
val=0;
}
return val;
}
int main(){
fin.get(s,1001,'\n');
l=strlen(s);
fin.get();
fin>>n;
fin.get();
fin.get(modif,101,'\n');
fin.close();
for (j=1;j<=n;j++){
i=0;
if (t[(int)modif[j-1]]==0) t[(int)modif[j-1]]=1;
else
t[(int)modif[j-1]]=0;
val=evalExp();
fout<<val;
}
fout.close();
return 0;
}