Pagini recente » Cod sursa (job #1436804) | Cod sursa (job #10477) | Cod sursa (job #1247989) | Cod sursa (job #358547) | Cod sursa (job #1348095)
#include <cstdio>
using namespace std;
char s1[1005];
char s[1005];
char v[101];
int p;
bool vec[50];
bool exp();
bool termen();
bool fc(bool x)
{
if(x==true)
return false;
else
return true;
}
bool exp()
{
bool val=termen();
if(s[p]=='A' && s[p+1]=='N' && s[p+2]=='D')
{
p=p+3;
val=val & termen();
return val;
}
if(s[p]=='O' && s[p+1]=='R')
{
p=p+2;
val=val | exp();
return val;
}
}
bool termen()
{
bool val,semn=0;
if(s[p]=='N' && s[p+1]=='O' && s[p+2]=='T')
{
p=p+3;
semn=fc(semn);
}
if(s[p]=='T' && s[p+1]=='R')
{
p=p+4;
val=true;
return val;
}
if(s[p]=='F' && s[p+1]=='A')
{
p=p+5;
val=false;
return val;
}
if(s[p]=='(')
{
p++;
val=exp();
p++;
if(semn==false)
return val;
else
return fc(val);
}
if(s[p]>='A' && s[p]<='Z')
{
val=vec[s[p]-'A'];
p++;
if(semn==false)
return val;
else
return fc(val);
}
}
int main()
{
FILE *in,*out;
in=fopen("bool.in","r");
out=fopen("bool.out","w");
int n,i,nr1=0;
char c;
bool ras;
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']=fc(vec[v[i]-'A']);
ras=exp();
fprintf(out,"%d",ras);
p=0;
}
return 0;
}