Pagini recente » Cod sursa (job #1818314) | Cod sursa (job #1566696) | Cod sursa (job #3178957) | Simulare 22 | Cod sursa (job #574893)
Cod sursa(job #574893)
#include <stdio.h>
FILE *f=fopen("bool.in","r");
FILE *g=fopen("bool.out","w");
int n,t;
int val[301];
char e[1001],s[101],*p;
int expresie();
int termen();
bool ver(){
if(t>=2 && e[t]=='R' && e[t-1]=='O'){
t--;
e[t]='|';
return true;
}
if(t>=3 && e[t]=='D' && e[t-1]=='N' && e[t-2]=='A'){
t-=2;
e[t]='&';
return true;
}
if(t>=3 && e[t]=='T' && e[t-1]=='O' && e[t-2]=='N'){
t-=2;
e[t]='!';
return true;
}
if(t>=4 && e[t]=='E' && e[t-1]=='U' && e[t-2]=='R' && e[t-3]=='T'){
t-=3;
e[t]='1';
return true;
}
if(t>=4 && e[t]=='E' && e[t-1]=='L' && e[t-2]=='A' && e[t-3]=='F'){
t-=3;
e[t]='0';
return true;
}
return false;
}
int termen(){
int r;
char sgn='1';
if(*p=='('){
p++;
r=expresie();
p++;
}
else{
if(*p=='!'){
sgn='!';
p++;
}
r=val[*p];
if(sgn=='!')
r=1^r;
}
return r;
}
int expresie(){
int r=termen();
while(*p=='&' || *p=='|'){
if(*p=='&'){
p++;
int z=termen();
r&=z;
continue;
}
if(*p=='|'){
p++;
int z=termen();
r|=z;
continue;
}
}
return r;
}
int main(void){
register int i,j;
char ch='q';
while(ch!='\n'){
fscanf(f,"%c",&ch);
if(ch==' ')
continue;
e[++t]=ch;
ver();
}
val['1']=1;
val['0']=0;
fscanf(f,"%d\n",&n);
for(i=1;i<=n;i++){
fscanf(f,"%c",&ch);
if(!val[ch])
val[ch]=1;
else
val[ch]=0;
p=e+1;
fprintf(g,"%d",expresie());
}
return 0;
}