Pagini recente » Cod sursa (job #1018617) | Cod sursa (job #1923847) | Cod sursa (job #2894154) | Cod sursa (job #2833191) | Cod sursa (job #1411630)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int f1[27],z[1000],dif=0,f2[27],pp=0;
char s1[5000],s2[260],v[1000];
int expresie();
int factor();
int termen();
int factor2();
int factor(char s[])
{
int val=0,semn=1,i,k;
while(s[pp]=='N')
{
pp++;
while(s[pp]>='A' && s[pp]<='Z')
pp++;
semn=-semn;
}
if(s[pp]=='(')
{
pp++;
val=expresie(s);
pp++;
if(semn==-1)
if(val==0)
val=1;
else
val=0;
return val;
}
while(s[pp]>='A' && s[pp]<='Z')
{
if(s[pp+1]=='R' || s[pp+1]=='A')
{
k=s[pp+1];
while(s[pp]>='A' && s[pp]<='Z')
pp++;
if(k=='R')
val=1;
else
val=0;
}
else{
for(i=1; i<=10; i++)
if(v[i]==s[pp])
break;
val=z[i];
pp++;
}
}
if(semn==-1)
if(val==0)
val=1;
else
val=0;
return val;
}
int termen(char s[])
{
int prod=factor(s);
while(s[pp]=='A')
if(s[pp]=='A')
{
pp++;
while(s[pp]>='A' && s[pp]<='Z')
pp++;
prod&=factor(s);
}
return prod;
}
int expresie(char s[])
{
int sum=termen(s);
while(s[pp]=='O')
if(s[pp]=='O')
{
pp++;
while(s[pp]>='A' && s[pp]<='Z')
pp++;
sum|=termen(s);
}
return sum;
}
int main()
{
int n,i,k,j,n1,n2;
char c;
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
n1=0;
do
{
s1[n1++]=getchar();
}while(s1[n1-1]!='\n');
for(i=0; i<n1; i++)
if(s1[i]>='A' && s1[i]<='Z' && (s1[i+1]<'A' || s1[i+1]>'Z') && (s1[i-1]<'A' || s1[i-1]>'Z'))
f1[s1[i]-'A'+1]=1;
k=0;
for(i=1; i<=26; i++)
if(f1[i]==1)
v[++k]=i+'A'-1;
scanf("%d",&n);
getchar();
for(j=1; j<=n; j++)
{
c=getchar();
i=1;
while(v[i]!=c)
i++;
if(z[i]==0)
z[i]=1;
else
z[i]=0;
pp=0;
printf("%d",expresie(s1));
}
return 0;
}