Pagini recente » Cod sursa (job #1518253) | Cod sursa (job #169907) | Cod sursa (job #1042512) | Cod sursa (job #1013176) | Cod sursa (job #2136896)
#include <stdio.h>
#include <stdlib.h>
int s[1001], p, v[28];
int or();
int and();
int var();
int or(){
int val=and();
while(s[p]=='O' || s[p+1]=='R'){
p+=3;
val=val|and();
}
return val;
}
int and(){
int val=var();
while(s[p]=='A' && s[p+1]=='N'){
p+=4;
val=val&var();
}
return val;
}
int var(){
int val=0, da=0;;
if(s[p]=='N' && s[p+1]=='O'){
p+=4;
da=1;
}
if(s[p]=='('){
p++;
val=or();
p++;
if(s[p]==' ')
p++;
return val;
}
if(s[p]=='T' && s[p+1]=='R'){
p+=4;
val=1;
}
if(s[p]=='F' && s[p+1]=='A'){
p+=5;
val=0;
}
if(s[p]>='A' && s[p]<='Z' && (s[p+1]==' ' || s[p+1]==')')){
val=v[s[p]-'A'];
p++;
}
if(s[p]==' ')
p++;
if(da==1)
return !val;
return val;
}
int main(){
FILE *fin, *fout;
int n, i=0;
char c;
fin=fopen("bool.in", "r");
fout=fopen("bool.out", "w");
s[i]=fgetc(fin);
while(s[i]!='\n'){
i++;
s[i]=fgetc(fin);
}
fscanf(fin, "%d ", &n);
for(i=0;i<n;i++){
fscanf(fin, "%c", &c);
v[c-'A']=!v[c-'A'];
fprintf(fout, "%d", or());
}
fclose(fin);
fclose(fout);
return 0;
}