Pagini recente » Cod sursa (job #2014473) | Cod sursa (job #1795780) | Cod sursa (job #2165891) | Cod sursa (job #1851845) | Cod sursa (job #1497864)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1000
#define MAXC 26
char v[MAXN+10];
int vf[MAXC],poz,n;
int fact(){
int nr;
if(v[poz]=='T'&&v[poz+1]=='R'&&v[poz+2]=='U'&&v[poz+3]=='E'){
nr=1;
poz+=4;
}
else
if(v[poz]=='F'&&v[poz+1]=='A'&&v[poz+2]=='L'&&v[poz+3]=='S'&&v[poz+4]=='E'){
nr=0;
poz+=5;
}
else
if(v[poz]=='N'&&v[poz+1]=='O'&&v[poz+2]=='T'){
poz+=3;
nr=!fact();
}
else
if(v[poz]=='('){
poz++;
nr=E();
poz++;
}
else
if(v[poz]>='A'||v[poz]<='Z'){
nr=vf[v[poz]-'A'];
poz++;
}
return nr;
}
inline int term(){
int nr,x;
nr=fact();
while(v[poz]=='A'&&v[poz+1]=='N'&&v[poz+2]=='D'){
poz+=3;
x=fact();
nr=(nr&&x);
}
return nr;
}
inline int E(){
int nr,x;
nr=term();
while(v[poz]=='O'&&v[poz+1]=='R'){
poz+=2;
x=term();
nr=(nr||x);
}
return nr;
}
int main(){
FILE*fi,*fout;
int t,i;
char a;
fi=fopen("bool.in" ,"r");
fout=fopen("bool.out" ,"w");
a=fgetc(fi);
n=0;
while(a!='\n'){
if(a!=' ')
v[n++]=a;
a=fgetc(fi);
}
a=fgetc(fi);
t=0;
while(a>='0'&&a<='9'){
t=t*10+a-'0';
a=fgetc(fi);
}
a=fgetc(fi);
for(i=0;i<t;i++){
poz=0;
vf[a-'A']=!vf[a-'A'];
fprintf(fout,"%d" ,E());
a=fgetc(fi);
}
fclose(fi);
fclose(fout);
return 0;
}