Pagini recente » Cod sursa (job #1921094) | Cod sursa (job #2242787) | Cod sursa (job #1192038) | Cod sursa (job #388193) | Cod sursa (job #1831938)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
const int Nmax=90+5;
int change;
bool o;
string t,sc,s;
bool lit[Nmax];
int i,j=0;
bool eval(bool semn);
bool isalpha(char x);
void rez();
bool termen(bool semn);
bool isalpha(char x)
{
if(x>=64 && x<=90)return 1;
return 0;
}
void rez()
{
lit[sc[j]]=!lit[sc[j]];
i=0;
fout<<eval(0);
if(j<change-1)
{
++j;
rez();
}
}
bool eval(bool semn)
{
bool r= termen(0);
while(s[i]=='2' or s[i]=='3')
{
if(s[i]=='2')
{
i+=3;
bool t=termen(0);
if(r ==1 or t==1)r=1;
else r=0;
}
else
{
i+=4;
bool t=termen(0);
if(r ==1 && t==1)r=1;
else r=0;
}
}
if(semn==1)r=!r;
return r;
}
bool termen(bool semn)
{
bool r;
if(s[i]=='2')
{
i+=4;
semn=1;
r=termen(1);
}
else
{
if(s[i]=='(')
{
++i;
r=eval(0);
if(semn==1)r=!r;
i+=2;
}
else
{
if(s[i]=='1'){
if((lit[t[i]]==0 && semn==0) or (lit[t[i]]==1 && semn==1))r=0;
else
r=1;
if(s[i+1]!=')')i+=2;
}
else
{
if((i+4)<s.size() && s[i+4]=='2')
{
r=0;
i+=6;
}
else
{
i+=5;
r=1;
}
if(semn==1)r=!r;
}
}
}
return r;
}
int main()
{
getline(fin,t);
fin>>change;
fin>>sc;
for(int i=0;i<t.size();++i)
{
if(t[i]=='O' && t[i+1]=='R')
{
s.push_back(50);s.push_back(50);
i+=1;
}
else
{
if(t[i]=='N' && t[i+1]=='O')
{
s.push_back(50);s.push_back(50);s.push_back(50);
i+=2;
}
else
{
if(t[i]=='T' && t[i+1]=='R')
{
s.push_back(50);s.push_back(50);s.push_back(50);s.push_back(50);
i+=3;
}
else
{
if(t[i]=='F' && t[i+1]=='A')
{
s.push_back(50);s.push_back(50);s.push_back(50);s.push_back(50);s.push_back(50);
i+=4;
}
else
{
if(t[i]=='A' && t[i+1]=='N')
{
s.push_back(51);s.push_back(51);s.push_back(51);
i+=2;
}
else
if(isalpha(t[i]))s.push_back(49);
else s.push_back(t[i]);
}
}
}
}
}
rez();
return 0;
}