Pagini recente » Statistici Cristina Sirbu (alia_dei) | Cod sursa (job #3037817) | Cod sursa (job #898044) | Cod sursa (job #1272830) | Cod sursa (job #1362344)
#include <cstdio>
using namespace std;
char s1[1005];
char s[1005];
char v[101];
int p;
bool vec[50];
bool factor();
bool exp();
bool termen();
bool fc(bool x)
{
if(x==true)
return false;
else
return true;
}
bool exp()
{
bool val=factor();
while(s[p]=='|')
{
p++;
val=val | factor();
}
return val;
}
bool factor()
{
bool val=termen();
while(s[p]=='&')
{
p++;
val=val & termen();
}
return val;
}
bool termen()
{
bool val,semn=0;
while(s[p]=='-')
{
p++;
semn=fc(semn);
}
if(s[p]=='(')
{
p++;
val=exp();
p++;
if(semn==false)
return val;
else
return fc(val);
}
while(s[p]=='1')
{
p++;
val=true;
}
while(s[p]=='0')
{
p++;
val=false;
}
while(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,ok;
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++)
{
ok=0;
if(s1[i]=='O' && s1[i+1]=='R')
{
s[nr1]='|';
nr1++;
i=i+1;
ok=1;
}
if(s1[i]=='A' && s1[i+1]=='N' && s1[i+2]=='D')
{
s[nr1]='&';
nr1++;
i=i+2;
ok=1;
}
if(s1[i]=='N' && s1[i+1]=='O')
{
s[nr1]='-';
nr1++;
i=i+2;
ok=1;
}
if(s1[i]=='T' && s1[i+1]=='R')
{
s[nr1]='1';
nr1++;
i=i+3;
ok=1;
}
if(s1[i]=='F' && s1[i+1]=='A')
{
s1[nr1]='0';
nr1++;
i=i+4;
ok=1;
}
if(s1[i]!=' ' && ok==0)
{
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;
}