Pagini recente » Cod sursa (job #1934946) | Cod sursa (job #1272588) | Cod sursa (job #84423) | Cod sursa (job #1270303) | Cod sursa (job #3198357)
#include <fstream>
using namespace std;
ifstream in("bool.in");
ofstream out("bool.out");
string s;
int i;
bool e[140];
bool termen(), factor();
bool expresie()
{
bool r=termen();
while(s[i]=='O' && s[i+1]=='R')
{
i+=2;
r=(r|termen());
}
return r;
}
bool termen()
{
bool r=factor();
while(s[i]=='A' && s[i+1]=='N' && s[i+2]=='D')
{
i+=3;
r=(r&factor());
}
return r;
}
bool factor()
{
bool r;
if(s[i]=='(')
{
i++;
r=expresie();
i++;
}
else if(s[i]=='N' && s[i+1]=='O' && s[i+2]=='T')
{
i+=3;
r=1^(factor());
}
else if(s[i]=='T' && s[i+1]=='R')
{
i+=4;
r=true;
}
else if(s[i]=='F' && s[i+1]=='A')
{
i+=5;
r=false;
}
else
{
r=e[s[i]];
i++;
}
return r;
}
int main()
{
char ch;
int nr;
string c;
getline(in, c);
in>>nr;
//scot spatiile
for(int i=0; i<c.size(); i++)
{
if(c[i]!=' ')
s+=c[i];
}
while(nr>0)
{
nr--;
in>>ch;
e[ch]=e[ch]^1;
i=0;
out<<expresie();
}
}