Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- using namespace std;
- class BoolExpr {
- public :
- virtual bool upgrade(BoolExpr *a, BoolExpr *b) {};
- virtual void print() {};
- bool x;
- };
- class Const : public BoolExpr {
- public:
- Const(bool a) {
- this->x = a;
- }
- bool upgrade() {
- return this->x;
- }
- void print() {
- cout << this->x;
- }
- };
- class Var : public BoolExpr {
- public:
- };
- class Not : public BoolExpr {
- public:
- Not(BoolExpr *a) {
- this->x = upgrade(a);
- }
- bool upgrade(BoolExpr *a) {
- return !a->x;
- }
- void print() {
- cout << this->x;
- }
- };
- class And : public BoolExpr {
- public:
- And(BoolExpr *a, BoolExpr *b) {
- this->x = upgrade(a, b);
- }
- bool upgrade(BoolExpr *a, BoolExpr *b) {
- return a->x & b->x;
- }
- void print() {
- cout << this->x;
- }
- };
- class Or : BoolExpr {
- public:
- Or(BoolExpr *a, BoolExpr *b) {
- this->x = upgrade(a, b);
- }
- bool upgrade(BoolExpr *a, BoolExpr *b) {
- return a->x | b->x;
- }
- void print() {
- cout << this->x;
- }
- };
- int main() {
- BoolExpr *a = new Const(true);
- BoolExpr *b = new Const(false);
- Or *c = new Or(a, b);
- c->print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement