Pagini recente » Cod sursa (job #426262) | Cod sursa (job #1871019) | Cod sursa (job #1766417) | Cod sursa (job #2626856) | Cod sursa (job #2105604)
#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];
int si();
int nu();
int sau()
{
int r;
r=si();
while(s[i]=='|')
{
i++;
r=r|si();
}
return r;
}
int si()
{
int r;
r=nu();
while(s[i]=='&')
{
i++;
r=r&nu();
}
return r;
}
int nu()
{
int r;
if(s[i]=='!')
{
i++;
r=!nu();
}
else if(s[i]=='(')
{
i++;
r=sau();
i++;
}
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<=91;++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;
}