Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Models / CellFormula.cpp
diff options
context:
space:
mode:
Commit3f16ffd43bbff7684c1a572c688bbd6990daf616 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-05-30 16:11:07 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-05-30 16:11:07 +0300
Filesfba91a46e369f0f385fd2be9bd07a77859c95111 /src/Models/CellFormula.cpp
FMI-OOP-P2_Tables-3f16ffd43bbff7684c1a572c688bbd6990daf616.tar
FMI-OOP-P2_Tables-3f16ffd43bbff7684c1a572c688bbd6990daf616.tar.gz
FMI-OOP-P2_Tables-3f16ffd43bbff7684c1a572c688bbd6990daf616.zip
Parent8cd7e44980107a3e205f67834eaea20927c6a0fe (diff)
Fixed bad types
1 files changed, 8 insertions, 7 deletions
-rw-r--r--src/Models/CellFormula.cpp15
diff --git a/src/Models/CellFormula.cpp b/src/Models/CellFormula.cpp
index b3203bc..4990ee4 100644
--- a/src/Models/CellFormula.cpp
+++ b/src/Models/CellFormula.cpp
@@ -14,15 +14,16 @@ double pow(double x, unsigned y) {
double CellFormula::calculate(unsigned index) {
CellLoc& c = formula[index].left;
- double lval = (c.firstInd == -1) ? localCells[c.secondInd]->getNumeralValue() : tableCells[c.firstInd][c.secondInd].getNumeralValue();
+ double lval = (c.firstInd == -1) ? localCells[c.secondInd].getNumeralValue() : (*tableCells)[c.firstInd][c.secondInd]->getNumeralValue();
while (formula[index].right < 0) {
- switch (-formula[index++].right) {
- case '+' : lval += formula[index].left->getNumeralValue(); break;
- case '*' : lval *= formula[index].left->getNumeralValue(); break;
- case '/' : if (formula[index].left->getNumeralValue() == 0) throw std::logic_error("");
- lval /= formula[index].left->getNumeralValue(); break;
- case '^' : lval = pow(lval, formula[index].left->getNumeralValue()); break;
+ double secondLval = (c.firstInd == -1) ? localCells[c.secondInd].getNumeralValue() : (*tableCells)[c.firstInd][c.secondInd]->getNumeralValue();
+ switch (-formula[index].right) {
+ case '+' : lval += secondLval; break;
+ case '*' : lval *= secondLval; break;
+ case '/' : if (secondLval == 0) throw std::logic_error("");
+ lval /= secondLval; break;
+ case '^' : lval = pow(lval, secondLval); break;
}
}