Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Models / CellFormula.cpp
diff options
context:
space:
mode:
Commitac9e433244625ada36978276258ae85616bacd7e (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-05-28 16:29:05 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-05-28 16:29:05 +0300
Files65032a4399eb674409eec7f85db5d7f0dfc41851 /src/Models/CellFormula.cpp
FMI-OOP-P2_Tables-ac9e433244625ada36978276258ae85616bacd7e.tar
FMI-OOP-P2_Tables-ac9e433244625ada36978276258ae85616bacd7e.tar.gz
FMI-OOP-P2_Tables-ac9e433244625ada36978276258ae85616bacd7e.zip
Parent02cb3becf3fc66e217e907b8a1c79fde3f41d153 (diff)
Autocommit at 28.05.2022 @ 16:29
1 files changed, 13 insertions, 1 deletions
-rw-r--r--src/Models/CellFormula.cpp14
diff --git a/src/Models/CellFormula.cpp b/src/Models/CellFormula.cpp
index 2c28d4b..7f45c2e 100644
--- a/src/Models/CellFormula.cpp
+++ b/src/Models/CellFormula.cpp
@@ -1,9 +1,21 @@
#include "CellFormula.h"
+#include "CellDouble.h"
#include <cstring>
double CellFormula::calculate(unsigned index) {
+ double lval = CellDouble(formula[index].left->getValue()).getValue();
+
switch(formula[index].right) {
- case none: return formula[index].left;
+ plus: return lval + calculate(index++);
+ minus: return lval - calculate(index++);
+ mult: return lval * calculate(index++);
+ div: return lval / calculate(index++);
+ pow:
+ double power = calculate(index++);
+ for (unsigned i = 0; i < power; i++)
+ lval *= lval;
+ none:
+ default: return lval;
}
}