Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. class BoolExpr {
  8. public :
  9.  
  10. virtual bool upgrade(BoolExpr *a, BoolExpr *b) {};
  11. virtual void print() {};
  12. bool x;
  13. };
  14.  
  15. class Const : public BoolExpr {
  16. public:
  17. Const(bool a) {
  18. this->x = a;
  19. }
  20.  
  21. bool upgrade() {
  22. return this->x;
  23. }
  24.  
  25. void print() {
  26. cout << this->x;
  27. }
  28. };
  29.  
  30. class Var : public BoolExpr {
  31. public:
  32.  
  33. };
  34.  
  35. class Not : public BoolExpr {
  36. public:
  37.  
  38. Not(BoolExpr *a) {
  39. this->x = upgrade(a);
  40. }
  41.  
  42. bool upgrade(BoolExpr *a) {
  43. return !a->x;
  44. }
  45.  
  46. void print() {
  47. cout << this->x;
  48. }
  49. };
  50.  
  51. class And : public BoolExpr {
  52. public:
  53.  
  54. And(BoolExpr *a, BoolExpr *b) {
  55. this->x = upgrade(a, b);
  56. }
  57.  
  58. bool upgrade(BoolExpr *a, BoolExpr *b) {
  59. return a->x & b->x;
  60. }
  61.  
  62. void print() {
  63. cout << this->x;
  64. }
  65. };
  66.  
  67. class Or : BoolExpr {
  68. public:
  69.  
  70. Or(BoolExpr *a, BoolExpr *b) {
  71. this->x = upgrade(a, b);
  72. }
  73.  
  74. bool upgrade(BoolExpr *a, BoolExpr *b) {
  75. return a->x | b->x;
  76. }
  77.  
  78. void print() {
  79. cout << this->x;
  80. }
  81. };
  82.  
  83. int main() {
  84. BoolExpr *a = new Const(true);
  85. BoolExpr *b = new Const(false);
  86. Or *c = new Or(a, b);
  87. c->print();
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement