diff options
sem 16
2 files changed, 18 insertions, 3 deletions
| -rw-r--r-- | Sem. 16/LogicExpressions/LogicExpressions/LogicExpr.h (renamed from Sem. 16/LogicExpressions/LogicExpr.h) | 6 | ||||
| -rw-r--r-- | Sem. 16/LogicExpressions/Source.cpp | 15 |
diff --git a/Sem. 16/LogicExpressions/LogicExpr.h b/Sem. 16/LogicExpressions/LogicExpressions/LogicExpr.h index ebb84b4..9188541 100644 --- a/Sem. 16/LogicExpressions/LogicExpr.h +++ b/Sem. 16/LogicExpressions/LogicExpressions/LogicExpr.h @@ -123,7 +123,7 @@ namespace LogicExpressions return std::move(current); } - bool CheckValues(LogicExpr* expr, const std::vector<char>& vars, bool value) + bool CheckValues(const LogicExpr* expr, const std::vector<char>& vars, bool value) { size_t checksCounts = 1 << vars.size(); @@ -137,12 +137,12 @@ namespace LogicExpressions return true; } - bool isTautology(LogicExpr* expr, const std::vector<char>& vars) + bool isTautology(const LogicExpr* expr, const std::vector<char>& vars) { return CheckValues(expr, vars, true); } - bool isContradiction(LogicExpr* expr, const std::vector<char>& vars) + bool isContradiction(const LogicExpr* expr, const std::vector<char>& vars) { return CheckValues(expr, vars, false); } diff --git a/Sem. 16/LogicExpressions/Source.cpp b/Sem. 16/LogicExpressions/Source.cpp new file mode 100644 index 0000000..2b810b8 --- /dev/null +++ b/Sem. 16/LogicExpressions/Source.cpp @@ -0,0 +1,15 @@ +#include "LogicExpressions/LogicExpr.h" + +using namespace LogicExpressions; + + +int main() +{ + LogicExpr* expr = new Operation(new Var('p'), '|', new Negation(new Var('p'))); // p & !p + expr->print(); + cout << " " << isTautology(expr, { 'p' }) << endl; + + LogicExpr* expr2 = new Operation(new Var('q'),'^',new Operation(new Var('p'), '^', new Negation(new Var('p')))); // q ^ (p ^ !p) + expr2->print(); + cout << " " << isContradiction(expr2, { 'p', 'q' }); +}
\ No newline at end of file |
