Pagini recente » Cod sursa (job #1167942) | Cod sursa (job #268044) | Cod sursa (job #1884374) | Cod sursa (job #2059622) | Cod sursa (job #1348059)
#include <cstdio>
using namespace std;
char s1[1001];
char s[1001];
char v[101];
int p,vec[50];
int exp();
int termen();
int max(int a,int b)
{
if(a>=b)
return a;
else
return b;
}
int exp()
{
int val=termen();
if(s[p]==' ')
p++;
if(s[p]=='A' && s[p+1]=='N' && s[p+2]=='D')
{
p=p+3;
val=(val+termen())/2;
return val;
}
if(s[p]=='O' && s[p+1]=='R')
{
p=p+2;
val=max(val,termen());
return val;
}
}
int termen()
{
int val,semn=0;
if(s[p]==' ')
p++;
if(s[p]=='N' && s[p+1]=='O' && s[p+2]=='T')
{
p=p+3;
semn=(semn+1)%2;
}
if(s[p]=='T' && s[p+1]=='R')
{
p=p+4;
val=1;
return val;
}
if(s[p]=='F' && s[p+1]=='A')
{
p=p+4;
val=0;
return val;
}
if(s[p]=='(')
{
p++;
val=exp();
p++;
return (val+semn)%2;
}
if(s[p]>='A' && s[p]<='Z')
{
val=vec[s[p]-'A'];
p++;
return (val+semn)%2;
}
}
int main()
{
FILE *in,*out;
in=fopen("bool.in","r");
out=fopen("bool.out","w");
int n,ras,i,nr1=0;
char c;
fgets(s1,1000,in);
fscanf(in,"%d",&n);
c=fgetc(in);
fgets(v,100,in);
for(i=0;i<=1000;i++)
{
if(s1[i]!=' ')
{
s[nr1]=s1[i];
nr1++;
}
}
for(i=0;i<n;i++)
{
vec[v[i]-'A']=(vec[v[i]-'A']+1)%2;
ras=exp();
fprintf(out,"%d",ras);
p=0;
}
return 0;
}