diff options
| -rw-r--r-- | HelpMe.md | 4 | ||||
| -rw-r--r-- | die.cpp | 1 | ||||
| -rw-r--r-- | die.h | 2 | ||||
| -rw-r--r-- | node/scalaroperatornode.cpp | 6 | ||||
| -rw-r--r-- | parsingtoolbox.cpp | 1 | ||||
| -rw-r--r-- | result/diceresult.cpp | 1 |
6 files changed, 14 insertions, 1 deletions
@@ -463,7 +463,11 @@ Result: 16 > 1d10^2 +> 15|2 +Integer division of 15 by 2. Result: 7 +> 15/2 +Division of 15 by 2. Result: 7.5 ## Validator @@ -97,6 +97,7 @@ qint64 Die::getValue() const case MINUS: value-=tmp; break; + case INTEGER_DIVIDE: case DIVIDE: if(tmp!=0) { @@ -34,7 +34,7 @@ public: /** * @brief The ArithmeticOperator enum */ - enum ArithmeticOperator {PLUS,MINUS,DIVIDE,MULTIPLICATION,POW}; + enum ArithmeticOperator {PLUS,MINUS,DIVIDE,MULTIPLICATION,INTEGER_DIVIDE, POW}; /** * @brief Die */ diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp index edc769d..4e24f2f 100644 --- a/node/scalaroperatornode.cpp +++ b/node/scalaroperatornode.cpp @@ -81,6 +81,9 @@ void ScalarOperatorNode::run(ExecutionNode* previous) case Die::DIVIDE: m_scalarResult->setValue(divide(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal())); break; + case Die::INTEGER_DIVIDE: + m_scalarResult->setValue(static_cast<int>(divide(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal()))); + break; case Die::POW: m_scalarResult->setValue(pow(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal())); break; @@ -162,6 +165,9 @@ QString ScalarOperatorNode::toString(bool wl) const case Die::DIVIDE: op="/"; break; + case Die::INTEGER_DIVIDE: + op="|"; + break; case Die::POW: op="^"; break; diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp index 07ad01a..7a3dcad 100644 --- a/parsingtoolbox.cpp +++ b/parsingtoolbox.cpp @@ -60,6 +60,7 @@ ParsingToolBox::ParsingToolBox() m_arithmeticOperation->insert(QStringLiteral("-"),Die::MINUS); m_arithmeticOperation->insert(QStringLiteral("*"),Die::MULTIPLICATION); m_arithmeticOperation->insert(QStringLiteral("x"),Die::MULTIPLICATION); + m_arithmeticOperation->insert(QStringLiteral("|"),Die::INTEGER_DIVIDE); m_arithmeticOperation->insert(QStringLiteral("/"),Die::DIVIDE); m_arithmeticOperation->insert(QStringLiteral("÷"),Die::DIVIDE); m_arithmeticOperation->insert(QStringLiteral("^"),Die::POW); diff --git a/result/diceresult.cpp b/result/diceresult.cpp index ce59cb1..7894b60 100644 --- a/result/diceresult.cpp +++ b/result/diceresult.cpp @@ -115,6 +115,7 @@ qreal DiceResult::getScalarResult() scalar-=tmp->getValue(); break; case Die::DIVIDE: + case Die::INTEGER_DIVIDE: if(tmp->getValue()!=0) { scalar/=tmp->getValue(); |