Pagini recente » Cod sursa (job #1873522) | Cod sursa (job #1613304) | Cod sursa (job #1523421) | Cod sursa (job #2991107) | Cod sursa (job #2791911)
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
int rasp[26],n,i;
char v[MAX];
int par();
int or();
int and(){
char af=par();
while(v[i+2]=='D' && v[i+1]=='N' && v[i]=='A'){
i+=4;
af=af&par();
}
return af;
}
int or(){
char af=and();
while(v[i]=='O' && v[i+1]=='R'){
i+=3;
af=af|and();
}
return af;
}
int par(){
char af;
if(v[i]=='('){
i++;
af=or();
i++;
}
else if(v[i]=='F' && v[i+1]=='A' && v[i+2]=='L' && v[i+3]=='S' && v[i+4]=='E'){
i+=6;
af=0;
}
else if(v[i]=='T' && v[i+1]=='R' && v[i+2]=='U' && v[i+3]=='E'){
i+=5;
af=1;
}
else if(v[i]=='N' && v[i+1]=='O' && v[i+2]=='T'){
i+=4;
af=!par();
}
else{
af=rasp[v[i]-'A'];
i+=2;
}
return af;
}
int main(){
FILE *fin,*fout;
int n,x;
char ch;
fin=fopen("bool.in", "r");
fout=fopen("bool.out", "w");
ch=fgetc(fin);
x=0;
while(ch!='\n'){
v[x]=ch;
x++;
ch=fgetc(fin);
}
fscanf(fin, "%d", &n);
ch=fgetc(fin);
for(x=0;x<n;x++){
ch=fgetc(fin);
i=0;
rasp[ch-'A']=!rasp[ch-'A'];
fprintf(fout, "%d", or());
}
fclose(fin);
fprintf(fout, "\n");
fclose(fout);
return 0;
}