Pagini recente » Cod sursa (job #441267) | Cod sursa (job #1855722) | Cod sursa (job #2643199) | Cod sursa (job #2359492) | Cod sursa (job #906788)
Cod sursa(job #906788)
#include <cstdio>
#include <fstream>
#include <cstring>
using namespace std;
int litere[31],n,k,i,c,st;
char expresie[1010],p;
FILE *f;
int si(int v1,int v2)
{
if((v1<0)||(v2<0)){return -1;}
else{return 1;}
}
int sau(int v1,int v2)
{
if((v1>0)||(v2>0)){return 1;}
else{return -1;}
}
int rezolva()
{
st++;int noturi=1,val=1,semn=1;//1 AND 2 OR
while(st<=n+1){
if((expresie[st]<='Z')&&(expresie[st]>='A')){
if((expresie[st+1]>'Z')||(expresie[st+1]<'A')){
if(semn==1){semn=0;val=si(val,litere[expresie[st]-'A']);}
if(semn==2){semn=0;val=sau(val,litere[expresie[st]-'A']);}
st++;
}
else{
if((expresie[st]=='T')&&(expresie[st+1]=='R')&&(expresie[st+2]=='U')&&(expresie[st+3]=='E')){
if(semn==1){semn=0;val=si(val,noturi);}
if(semn==2){semn=0;val=sau(val,noturi);}
st+=4;
}
if((expresie[st]=='F')&&(expresie[st+1]=='A')&&(expresie[st+2]=='L')&&(expresie[st+3]=='S')&&(expresie[st+4]=='E')){
if(semn==1){semn=0;val=si(val,noturi*-1);}
if(semn==2){semn=0;val=sau(val,noturi*-1);}
st+=5;
}
if((expresie[st]=='N')&&(expresie[st+1]=='O')&&(expresie[st+2]=='T')){noturi*=-1;st+=3;}
if((expresie[st]=='A')&&(expresie[st+1]=='N')&&(expresie[st+2]=='D')){semn=1;st+=3;}
if((expresie[st]=='O')&&(expresie[st+1]=='R')){semn=2;st+=2;}
}
}
if(expresie[st]==' '){st++;}
if(expresie[st]==')'){st++;return val;}
if(expresie[st]=='('){
if(semn==1){semn=0;val=si(val,rezolva());}
if(semn==2){semn=0;val=sau(val,rezolva());}
}
}}
int main()
{
ifstream f("bool.in");
freopen("bool.out","w",stdout);
f.getline(expresie,1010);
n=strlen(expresie);
expresie[n]=')';
f>>k;
for(i=0;i<=30;i++){
litere[i]=-1;
}
for(i=1;i<=k;i++){
f>>p;
litere[p-'A']*=-1;
st=-1;
c=rezolva();
if(c==1){printf("%d",c);}
else{printf("0");}
}
return 0;
}