Pagini recente » Cod sursa (job #1195517) | Cod sursa (job #2095041) | Cod sursa (job #296453) | Cod sursa (job #227272) | Cod sursa (job #1496300)
#include <stdio.h>
char fr[30],v[1000];
int k;
void verif(){
if(k>=1)
if(v[k]=='R'&&v[k-1]=='O'){
k-=1;
v[k]='|';
}
if(k>=2){
if(v[k]=='D'&&v[k-1]=='N'&&v[k-2]=='A'){
k-=2;
v[k]='&';
}
if(v[k]=='T'&&v[k-1]=='O'&&v[k-2]=='N'){
k-=2;
v[k]='!';
}
}
if(k>=3)
if(v[k]=='E'&&v[k-1]=='U'&&v[k-2]=='R'&&v[k-3]=='T'){
k-=3;
v[k]=1;
}
if(k>=4)
if(v[k]=='E'&&v[k-1]=='S'&&v[k-2]=='L'&&v[k-3]=='A'&&v[k-4]=='F'){
k-=4;
v[k]=0;
}
}
int expr(int &i);
int term(int &i){
int rez;
if(v[i]==1||v[i]==0){
rez=v[i];
i++;
}
else
if(v[i]=='!'){
i++;
if(v[i]=='('){
i++;
rez=1-expr(i);
}
else{
rez=1-fr[v[i]-'A'];
i++;
}
}
else{
rez=fr[v[i]-'A'];
i++;
}
return rez;
}
int expr(int &i){
char semn='&';
int rez=1;
while(i<=k&&v[i]!=')'){
if(v[i]=='&'||v[i]=='|'){
semn=v[i];
i++;
}
else
if(v[i]!='('&&v[i]!=')'){
if(semn=='&')
rez=rez&term(i);
else
rez=rez|term(i);
}
else
if(v[i]=='('){
i++;
if(semn=='&')
rez=rez&expr(i);
else
rez=rez|expr(i);
}
}
i++;
return rez;
}
int main(){
FILE *fin,*fout;
fin=fopen("bool.in","r");
fout=fopen("bool.out","w");
int i=0,n,rez,j;
char ch;
ch=fgetc(fin);
v[0]=ch;
while(ch!='\n'){
ch=fgetc(fin);
if(ch=='('||ch==')'){
k++;
v[k]=ch;
}
else
if(ch>='A'&&ch<='Z'){
k++;
v[k]=ch;
verif();
}
}
fscanf(fin,"%d\n",&n);
for(i=1;i<=n;i++){
ch=fgetc(fin);
fr[ch-'A']=(fr[ch-'A']+1)%2;
j=0;
rez=expr(j);
fprintf(fout,"%d",rez);
}
fclose(fin);
fclose(fout);
return 0;
}