Pagini recente » Cod sursa (job #2277486) | Cod sursa (job #395302) | Cod sursa (job #1639241) | Cod sursa (job #304539) | Cod sursa (job #1008374)
#include <fstream>
using namespace std;
char sir[1005], instr[105];
int n,val[500],poz;
int eval();
int termen();
int factor();
inline int eval()
{
int sol;
sol=termen();
while(sir[poz]=='A' && sir[poz+1]=='N')
{
poz+=4;
sol&=termen();
}
return sol;
}
inline int termen()
{
int sol;
sol=factor();
while(sir[poz]=='O' && sir[poz+1]=='R')
{
poz+=3;
sol|=factor();
}
return sol;
}
inline int factor()
{
int sol;
if(sir[poz]=='(')
{
poz++;
sol=eval();
poz++;
}
else
if(sir[poz]=='N' && sir[poz+1]=='O')
{
poz+=4;
sol=!factor();
}
else
if(sir[poz]=='T' && sir[poz+1]=='R')
{
poz+=5;
sol=1;
}
else
if(sir[poz]=='F' && sir[poz+1]=='A')
{
poz+=6;
sol=0;
}
else
{
sol=val[sir[poz]-'A'];
poz+=2;
}
return sol;
}
int main()
{
int i;
ifstream fin("bool.in");
fin.getline(sir, 1005);
fin>>n;fin.get();
fin.getline(instr, 105);
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;
}