Pagini recente » Cod sursa (job #428976) | Cod sursa (job #563406) | Cod sursa (job #1887914) | Cod sursa (job #774805) | Cod sursa (job #2143553)
#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;
}
if(*it == 'O'){
s.push_back('|');
it++;
}
if(*it == 'N'){
s.push_back('!');
it += 2;
}
}
else
s.push_back(val[*it - 'A'] + '0');
}
}
it = s.begin();
fo << expresie();
}
return 0;
}