Pagini recente » Cod sursa (job #1888710) | Cod sursa (job #1544185) | Cod sursa (job #1096947) | Cod sursa (job #1138185) | Cod sursa (job #3139985)
#include <fstream>
using namespace std;
ifstream cin ("bool.in");
ofstream cout ("bool.out");
char sir[1001] , *pozitie;
bool valori[26];
bool Expresie (int);
void Eliminare ()
{
while (*pozitie == ' ')
pozitie++;
}
bool Termen ()
{
Eliminare();
bool termen;
if (*pozitie == '(')
pozitie++ , termen = Expresie(0) , pozitie++;
else
if (*pozitie == 'N' && *(pozitie + 1) == 'O' && *(pozitie + 2) == 'T') {
pozitie += 3; Eliminare();
termen = !valori[*pozitie - 'A'];
pozitie++;
}
else
termen = valori[*pozitie - 'A'] , pozitie++;
return termen;
}
bool Valid (int adancime)
{
Eliminare();
if (adancime == 0)
{
if (*pozitie == 'A' && *(pozitie + 1) == 'N' && *(pozitie + 2) == 'D') {
pozitie += 3; return true;
} else return false;
}
if (*pozitie == 'O' && *(pozitie + 1) == 'R') {
pozitie += 2; return true;
} else return false;
}
bool Expresie (int adancime)
{
bool rezultat;
if (!adancime) rezultat = Expresie(1);
else rezultat = Termen();
while (Valid(adancime)) {
int termen;
if (!adancime) termen = Expresie(1);
else termen = Termen();
if (adancime == 0) rezultat = rezultat && termen;
else rezultat = rezultat || termen;
}
return rezultat;
}
int main ()
{
cin.getline(sir , 1001);
int schimbari;
cin >> schimbari;
char litera;
for (int indice = 1 ; indice <= schimbari ; indice++) {
cin >> litera; pozitie = sir;
valori[litera - 'A'] = !valori[litera - 'A'];
cout << Expresie(0);
}
cout.close(); cin.close();
return 0;
}