Pagini recente » Cod sursa (job #846460) | Cod sursa (job #478808) | Cod sursa (job #2323920) | Cod sursa (job #2369329) | Cod sursa (job #2816007)
#include <fstream>
using namespace std;
int i = 0;
char s[1004];
char registre['Z'-'A'+1];
int evor();
int evand();
int evfactor();
int main()
{
int nrmodificari = 0;
ifstream fin("bool.in");
ofstream fout("bool.out");
fin.getline(s, 1001);
fin >> nrmodificari;
char modificari[nrmodificari+1];
fin.getline(modificari, nrmodificari+1);
fin.getline(modificari, nrmodificari+1);
for(int j = 0; j < nrmodificari; j++)
{
registre[modificari[j]-'A'] = 1 - registre[modificari[j]-'A'];
i = 0;
fout << evor();
}
fout << endl;
return 0;
}
int evor()
{
int r = evand();
while(1) {
if(s[i] == 'O')
{
if(s[i+1] == 'R')
{
i += 3;
r = r || evand();
} else
break;
} else
break;
}
return r;
}
int evand()
{
int r = evfactor();
while(1) {
if(s[i] == 'A')
{
if(s[i+1] == 'N')
{
if(s[i+2] == 'D')
{
i += 4;
r = r && evfactor();
}
} else
break;
} else
break;
}
return r;
}
int evfactor()
{
int negat = 0;
if(s[i] == 'N')
{
if(s[i+1] == 'O')
{
if(s[i+2] == 'T')
{
i += 4;
negat = 1;
}
}
}
int r = 0;
if(s[i] == '(')
{
i++;
r = evor();
i++;
}
else if(s[i] == 'T')
{
if(s[i+1] == 'R')
{
if(s[i+2] == 'U')
{
if(s[i+3] == 'E')
{
r = 1;
i += 5;
}
}
}
}
else if(s[i] == 'F')
{
if(s[i+1] == 'A')
{
if(s[i+2] == 'L')
{
if(s[i+3] == 'S')
{
if(s[i+4] == 'E')
{
r = 0;
i += 6;
}
}
}
}
}
else if(s[i] >= 'A' && s[i] <= 'Z')
{
r = registre['A'-s[i]];
}
if(negat)
return !r;
else
return r;
}