Pagini recente » Cod sursa (job #314854) | Cod sursa (job #45835) | Cod sursa (job #2806532) | Cod sursa (job #2263874) | Cod sursa (job #1840570)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin ("bool.in");
ofstream fout("bool.out");
char c[1010],a[1010],k,d[1010];
int b[1010],vl[260];
int x,y,i,n,j,p;
void tr()
{
int m;int n;
m=b[y-1]; n=b[y];
switch (a[x])
{
case '!' : { b[y--]=!n ; break; }
case '&' : { b[--y]=m-n ; break; }
case '|' : { b[--y]=m*n ; break; }
}
--x;
}
void dcd()
{
++i;
if (c[i]==' ')
{
b[++y]=vl[c[i-1]];
}
else if (c[i]=='O')
{
a[++x]='!';
i+=2;
}
else if (c[i]=='N')
{
a[++x]='&';
i+=2;
}
else if(c[i]=='R')
{
++i;
if (c[i]=='U')
{
b[++x]=1;
i+=2;
}
else
a[++x]='|';
}
else
{
b[++x]=0;
i+=4;
}
}
int main()
{
fin.getline (c+1,1010);
n=strlen(c+1);
vl['!']=3; vl['&']=2; vl['|']=1;
fin>>p;
//fin >> k;
fin>>d;
c[0]='('; c[n+1]=')';
for (j=0;j<p;++j)
{
vl[d[j]]=!vl[d[j]];
x=y=0;
for (i=0;i<=n+1; ++i)
{
if (c[i]=='(')
{
a[++x]='(';
}
else if ( c[i]==')' )
while (a[x]!='(')
{
tr();
}
else if (c[i]==' ')
while (c[i]==' ')
{
++i;
}
else
{
dcd();
}
}
fout << b[1];
}
return 0;
}