Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Models / CellFormula.cpp
diff options
context:
space:
mode:
Commit547c1b6d327d0135b17922c22b891691d574973b (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-05-28 19:44:51 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-05-28 19:44:51 +0300
Files354d0dbff0a9a9086ec7f0ddbf216f266d38adeb /src/Models/CellFormula.cpp
FMI-OOP-P2_Tables-547c1b6d327d0135b17922c22b891691d574973b.tar
FMI-OOP-P2_Tables-547c1b6d327d0135b17922c22b891691d574973b.tar.gz
FMI-OOP-P2_Tables-547c1b6d327d0135b17922c22b891691d574973b.zip
Parent61d9970168b0d68e93664223751aec099e88d776 (diff)
Autocommit at 28.05.2022 @ 19:44
1 files changed, 17 insertions, 13 deletions
-rw-r--r--src/Models/CellFormula.cpp30
diff --git a/src/Models/CellFormula.cpp b/src/Models/CellFormula.cpp
index a53c3e5..3cf5bab 100644
--- a/src/Models/CellFormula.cpp
+++ b/src/Models/CellFormula.cpp
@@ -12,21 +12,21 @@ double CellFormula::calculate(unsigned index) {
if (formula[index].right < 0) {
switch (-formula[index++].right) {
- case plus : lval += formula[index].left->getNumeralValue(); break;
- case minus : lval -= formula[index].left->getNumeralValue(); break;
- case mult : lval *= formula[index].left->getNumeralValue(); break;
- case div : lval /= formula[index].left->getNumeralValue(); break;
+ case '+' : lval += formula[index].left->getNumeralValue(); break;
+ case '-' : lval -= formula[index].left->getNumeralValue(); break;
+ case '*': lval *= formula[index].left->getNumeralValue(); break;
+ case '/' : lval /= formula[index].left->getNumeralValue(); break;
// case pow : lval += formula[index].left->getNumeralValue(); break;
}
}
switch(formula[index].right) {
- case plus : return lval + calculate(index++);
- case minus : return lval - calculate(index++);
- case mult : return lval * calculate(index++);
- case div : return lval / calculate(index++);
- case pow :
- case none :
+ case '+' : return lval + calculate(index++);
+ case '-' : return lval - calculate(index++);
+ case '*' : return lval * calculate(index++);
+ case '/' : return lval / calculate(index++);
+ case '^' :
+ case '\0':
default : return lval;
}
}
@@ -39,7 +39,7 @@ void CellFormula::parseAndSetValue(const char* str) {
rawFormula = String(str);
Cell* ptr;
- Op currOp;
+ char currOp;
str++;
while (*str == ' ') str++;
@@ -50,7 +50,7 @@ void CellFormula::parseAndSetValue(const char* str) {
while (*str != ' ') str++;
ptr = (*tableCells)[row][col];
- currOp = (Op)*str;
+ currOp = *str;
}
else {
double val = atof(str);
@@ -58,7 +58,11 @@ void CellFormula::parseAndSetValue(const char* str) {
localCells.add(CellDouble(val));
ptr = &localCells[localCells.get_count() - 1];
- currOp = (Op)*str;
+ currOp = *str;
+ }
+
+ switch (currOp) {
+ case '^': currOp *= -1; break;
}
formula.add({ptr, currOp});