Pagini recente » Cod sursa (job #2850973) | Cod sursa (job #89217) | Cod sursa (job #169686) | Cod sursa (job #2086852) | Cod sursa (job #154151)
Cod sursa(job #154151)
#include<fstream.h>
#include<string.h>
ifstream f("bool.in");
ofstream g("bool.out");
char e[1001],fp[1001],st[1001],mod[101];
int s[1001],n,i,j,k,p[256],l,val[101],m;
void evalueaza()
{int i=0;
for(i=0;i<strlen(fp);i++)
if(fp[i]=='&')
{if(s[i-2]==1&&s[i-1]==1)
s[i-2]=1;
else
s[i-2]=0;
}
else
if(fp[i]=='|')
{if(s[i-2]==0&&s[i-1]==0)
s[i-2]=0;
else
s[i-2]=1;
}
else
if(fp[i]=='!')
{if(s[i-1]==0)
s[i-1]=1;
else
s[i-1]=0;
}
else
s[i]=val[fp[i]-0];
g<<s[0];
}
int main()
{
p['!']=3;
p['&']=2;
p['|']=1;
f.getline(e,1000);
f>>n;f.get();
f.getline(mod,100);
m=strlen(e);
k=0;
while(k<m)
if(e[k]=='N'&&e[k+1]=='O'&&e[k+2]=='T')
{if(p[st[j-1]]>=p['!'])
{fp[i]=st[j-1];
i=i+1;
st[j-1]='!';
}
else
{st[j]='!';
j=j+1;
}
k=k+3;
}
else
if(e[k]=='A'&&e[k+1]=='N'&&e[k+2]=='D')
{if(p[st[j-1]]>=p['&'])
{fp[i]=st[j-1];
i=i+1;
st[j-1]='&';
}
else
{st[j]='&';
j=j+1;
}
k=k+3;
}
else
if(e[k]=='O'&&e[k+1]=='R')
{if(p[st[j-1]]>=p['|'])
{fp[i]=st[j-1];
i=i+1;
st[j-1]='|';
}
else
{st[j]='|';
j=j+1;
}
k=k+2;
}
else
if(e[k]==' ')
k=k+1;
else
if(e[k]=='(')
{st[j]='(';
j=j+1;
k=k+1;
}
else
if(e[k]==')')
{j=j-1;
while(st[j]!='(')
{fp[i]=st[j];
i=i+1;
j=j-1;
}
k=k+1;
}
else
if(e[k]=='F'&&e[k+1]=='A'&&e[k+2]=='L'&&e[k+3]=='S'&&e[k+4]=='E')
{fp[i]='0';
i=i+1;
k=k+5;
}
else
if(e[k]=='T'&&e[k+1]=='R'&&e[k+2]=='U'&&e[k+3]=='E')
{fp[i]='1';
i=i+1;
k=k+4;
}
else
{fp[i]=e[k];
i=i+1;
k=k+1;
}
for(l=j-1;l>=0;l--)
{fp[i]=st[l];
i=i+1;
}
for(i=0;i<n;i++)
{if(val[fp[i]-0]==1)
val[fp[i]-0]=0;
else
val[fp[i]-0]=1;
evalueaza();
}
f.close();
g.close();
return 0;
}