Pagini recente » Cod sursa (job #1656038) | Cod sursa (job #2175283) | Cod sursa (job #606240) | Cod sursa (job #733715) | Cod sursa (job #1212999)
#include<fstream>
#include<cstdio>
#include<cstring>
using namespace std;
int i, k, v[1005], n;
char chi[107], ch[107], ch2;
int expresie();
int sau();
int si();
int expresie(){
int r=sau();
while(ch[i]=='|'){
i++;
if(r==1)
expresie();
else
if(expresie()==1)
r=1;
}
return r;
}
int sau(){
int r=si();
while(ch[i]=='&'){
i++;
if(r==0)
expresie();
else
if(expresie()==0)
r=0;
}
return r;
}
int si(){
int r;
if(ch[i]!='~'){
if(ch[i]=='('){
i++;
r=expresie();
i++;
}else
r=v[ch[i]];
return r;
}
else{
i++;
if(ch[i]=='('){
i++;
r=expresie();
i++;
}else
r=v[ch[i]];
return (r+1)%2;
}
}
FILE *in=fopen("bool.in","r");
ofstream out("bool.out");
int main(){
fgets(chi, 100, in);
for(i=0; chi[i]!='\n'; i++){
if(chi[i]>='A' && chi[i]<='Z' && (chi[i+1]==' ' || chi[i+1]==')')){
ch[++k]=chi[i];
if(chi[i+1]==' ')
i++;
continue;
}
if(chi[i]=='A' && chi[i+1]=='N' && chi[i+2]=='D' && chi[i+3]==' '){
ch[++k]='&';
i+=3;
continue;
}
if(chi[i]=='O' && chi[i+1]=='R' && chi[i+2]==' '){
ch[++k]='|';
i+=2;
continue;
}
if(chi[i]=='('){
ch[++k]=chi[i];
continue;
}
if(chi[i]==')'){
ch[++k]=chi[i];
continue;
}
if(chi[i]=='T' && chi[i+1]=='R' && chi[i+2]=='U' && chi[i+3]=='E'){
ch[++k]='1';
i+=3;
continue;
}
if(chi[i]=='F' && chi[i+1]=='A' && chi[i+2]=='L' && chi[i+3]=='S' && chi[i+4]=='E'){
ch[++k]='0';
i+=4;
continue;
}
//if(chi[i]==' '){
//i++;
//continue;
//}
if(chi[i]=='N' && chi[i+1]=='O' && chi[i+2]=='T'){
ch[++k]='~';
i+=2;
continue;
}
}
//in>>n;
fscanf(in, "%d\n", &n);
for(;n--;){
i=1;
//in>>ch2;
fscanf(in, "%c", &ch2);
v[ch2]=(v[ch2]+1)%2;
out<<expresie();
}
//for(i=1; i<=k; i++)
//out<<ch[i];
return 0;
}