Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 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() {};
  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.  
  22. class Var : public BoolExpr {
  23.  
  24. };
  25.  
  26. class Not : public BoolExpr {
  27. public:
  28.  
  29. Not(BoolExpr a) {
  30. this->x = upgrade(a);
  31. }
  32.  
  33. bool upgrade(BoolExpr a) {
  34. return !a.x;
  35. }
  36.  
  37. void print() {
  38. cout << x;
  39. }
  40. };
  41.  
  42. class And : public BoolExpr {
  43. public:
  44.  
  45. And(BoolExpr *a, BoolExpr *b) {
  46. this->x = upgrade(a, b);
  47. }
  48.  
  49. bool upgrade(BoolExpr *a, BoolExpr *b) {
  50. return a->x & b->x;
  51. }
  52.  
  53. void print() {
  54. cout << x;
  55. }
  56. };
  57.  
  58. class Or : BoolExpr {
  59. public:
  60.  
  61. Or(BoolExpr *a, BoolExpr *b) {
  62. this->x = upgrade(a, b);
  63. }
  64.  
  65. bool upgrade(BoolExpr *a, BoolExpr *b) {
  66. return a->x | b->x;
  67. }
  68.  
  69. void print() {
  70. cout << x;
  71. }
  72. };
  73.  
  74. int main() {
  75. BoolExpr *a = new Const(true);
  76. BoolExpr *b = new Const(false);
  77. Or *c = new Or(a, b);
  78. c->print();
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement