Pagini recente » Cod sursa (job #1020484) | Cod sursa (job #488250) | Cod sursa (job #1529978) | Cod sursa (job #2265622) | Cod sursa (job #2143563)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("bool.in");
ofstream fo("bool.out");
char val[26];
string s;
string::iterator it;
int expresie();
int AND();
int numar();
int numar(){
int semn = 1;
while(*it == '!'){
it++;//!
semn = 1 - semn;
}
if(*it == '('){
it++;//(
int val = expresie();
if(semn == 0)
val = 1 - val;
it++;//)
return val;
}
int val = *it - '0';
it++;//cifra
if(semn == 0)
val = 1 - val;
return val;
}
int AND(){
int val = numar();
while(*it == '&'){
it++;//&
val = val & numar();
}
return val;
}
int expresie(){
int val = AND();
while(*it == '|'){
it++;//|
val = val | AND();
}
return val;
}
int main()
{
string in;
getline(fi, in);
int n;
char ch;
fi >> n;
for(int j = 0; j < n; j++){
fi >> ch;
val[ch - 'A'] = 1 - val[ch - 'A'];
s.clear();
for(auto it = in.begin(); it != in.end(); it++){
if(*it == '(')
s.push_back('(');
else if(*it == ')')
s.push_back(')');
else if(*it != ' '){
if(isalpha(*(it + 1))){
if(*it == 'A'){
s.push_back('&');
it += 2;
}
else if(*it == 'O'){
s.push_back('|');
it++;
}
else if(*it == 'N'){
s.push_back('!');
it += 2;
}
else if(*it == 'T'){
s.push_back('1');
it += 3;
}
else if(*it == 'F'){
s.push_back('0');
it += 4;
}
}
else
s.push_back(val[*it - 'A'] + '0');
}
}
it = s.begin();
fo << expresie();
}
return 0;
}