Pagini recente » Cod sursa (job #2750957) | Cod sursa (job #529724) | Cod sursa (job #1590202) | Cod sursa (job #1143296) | Cod sursa (job #2105610)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char s[1001],ch;
short n,i;
bool ok[91];
bool si();
bool nu();
bool sau()
{
bool r;
r=si();
while(s[i]=='|')
{
i++;
r=r|si();
}
return r;
}
bool si()
{
bool r;
r=nu();
while(s[i]=='&')
{
i++;
r=r&nu();
}
return r;
}
bool nu()
{
bool r;
r=0;
if(s[i]=='(')
{
i++;
r=sau();
i++;
}
else if(s[i]=='!')
{
i++;
r=!nu();
}
else if(s[i]>='A' && s[i]<='Z') {r=ok[int(s[i])]; i++;}
else if(s[i]=='0') {r=0; i++;}
else if(s[i]=='1') {r=1; i++;}
return r;
}
int main()
{
for(i=65;i<=90;++i) ok[i]=0;
f.getline(s,1001);
i=0;
while(i<strlen(s))
{
if(s[i]==' ')strcpy(s+i,s+i+1);
if(s[i]=='A' && s[i+1]=='N')
{
strcpy(s+i,s+i+2);
s[i]='&';
}
if(s[i]=='N' && s[i+1]=='O')
{
strcpy(s+i,s+i+2);
s[i]='!';
}
if(s[i]=='O' && s[i+1]=='R')
{
strcpy(s+i,s+i+1);
s[i]='|';
}
if(s[i]=='T' && s[i+1]=='R')
{
strcpy(s+i,s+i+3);
s[i]='1';
}
if(s[i]=='F' && s[i+1]=='A')
{
strcpy(s+i,s+i+4);
s[i]='0';
}
i++;
}
f>>n;
//g<<s<<endl;
for(short j=1;j<=n;++j)
{
f>>ch;
ok[int(ch)]=!ok[int(ch)];
i=0;
g<<sau();
}
return 0;
}