Pagini recente » Cod sursa (job #777030) | Cod sursa (job #1557112) | Cod sursa (job #1359520) | Cod sursa (job #1291907) | Cod sursa (job #1008397)
#include <fstream>
using namespace std;
char sir[1005], instr[105];
int val[500],poz;
int termen();
int factor();
inline int eval()
{
int sol;
sol=termen();
while(sir[poz]=='O' && sir[poz+1]=='R')
{
poz+=2;
while(sir[poz] == ' ')
poz++;
sol|=termen();
}
return sol;
}
inline int termen()
{
int sol;
sol=factor();
while(sir[poz]=='A' && sir[poz+1]=='N')
{
poz+=3;
while(sir[poz] == ' ')
poz++;
sol&=factor();
}
return sol;
}
inline int factor()
{
int sol=0;
if(sir[poz]=='(')
{
poz++;
while(sir[poz] == ' ')
poz++;
sol=eval();
poz++;
while(sir[poz] == ' ')
poz++;
}
else
if(sir[poz]=='N' && sir[poz+1]=='O')
{
poz+=3;
while(sir[poz] == ' ')
poz++;
sol=!factor();
}
else
if(sir[poz]=='T' && sir[poz+1]=='R')
{
poz+=4;
while(sir[poz] == ' ')
poz++;
sol=1;
}
else
if(sir[poz]=='F' && sir[poz+1]=='A')
{
poz+=5;
while(sir[poz] == ' ')
poz++;
sol=0;
}
else
if (sir[poz] >= 'A' && sir[poz] <= 'Z' && !(sir[poz+1] >= 'A' && sir[poz+1] <= 'Z'))
{
sol=val[sir[poz]-'A'];
poz+=1;
while(sir[poz] == ' ')
poz++;
}
return sol;
}
int main()
{
int i,n;
ifstream fin("bool.in");
fin.getline(sir, 1005);
fin>>n;fin.get();
fin.getline(instr, 105);
fin.close();
ofstream fout("bool.out");
for(i=0;i<n;i++)
{
val[sir[i]-'A']=1-val[sir[i]-'A'];
poz=0;
fout<<eval();
}
fout<<"\n";
fout.close();
return 0;
}