Pagini recente » Cod sursa (job #1654314) | Cod sursa (job #223280) | Cod sursa (job #672150) | Cod sursa (job #884791) | Cod sursa (job #1572766)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
char s[1000],aux[1000];
bool v[26];
int p;
bool expresie();
bool termen();
bool factor();
void Transforma()
{
int n=0;
for (int i=0;aux[i]!=0;i++) {
if (aux[i]=='A') {
if (aux[i+1]=='N') {i+=2;s[n++]='&';}
else s[n++]='A';
}
else {
if (aux[i]=='T') {
if (aux[i+1]=='R') {i+=3;s[n++]='1';}
else s[n++]='T';
}
else {
if (aux[i]=='F') {
if (aux[i+1]=='A') {i+=4;s[n++]='0';}
else s[n++]='F';
}
else {
if (aux[i]=='N') {
if (aux[i+1]=='O') {i+=2;s[n++]='!';}
else s[n++]='N';
}
else {
if (aux[i]=='O') {
if (aux[i+1]=='R') {i++;s[n++]='|';}
else s[n++]='O';
}
else s[n++]=aux[i];
}
}
}
}
}
}
bool expresie()
{
bool val=termen();
while (s[p]=='|') {
p++;
val=val||termen();
}
return val;
}
bool termen()
{
bool val=factor();
while (s[p]=='&') {
p++;
val=val&&factor();
}
return val;
}
bool factor()
{
bool val;
if (s[p]=='!') {
p++;
val=factor();
return !val;
}
if (s[p]=='(') {
p++;
val=expresie();
}
else if (s[p]=='0') {p++;return false;}
else if (s[p]=='1') {p++;return true;}
else val=v[s[p]-'A'];
p++;
return val;
}
int main()
{
int n;
char x;
fin.get(aux,1000);
Transforma();
fin>>n;
for (int i=0;i<n;i++) {
fin>>x;
v[x-'A']=(v[x-'A']==0?1:0);
p=0;
fout<<expresie();
v[x-'A']=(v[x-'A']==0?1:0);
}
}