Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Models / CellFormula.cpp
diff options
context:
space:
mode:
Commit3b9fc2b837f42f1b3f5137b98e6edbcf22e99f73 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-05-29 14:25:05 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-05-29 14:25:05 +0300
Files26771cbc251264ffcf24e5ed8087f2f1e087a788 /src/Models/CellFormula.cpp
FMI-OOP-P2_Tables-3b9fc2b837f42f1b3f5137b98e6edbcf22e99f73.tar
FMI-OOP-P2_Tables-3b9fc2b837f42f1b3f5137b98e6edbcf22e99f73.tar.gz
FMI-OOP-P2_Tables-3b9fc2b837f42f1b3f5137b98e6edbcf22e99f73.zip
Parente76bee3e7aaa901b3134a654cca4a97bd90af757 (diff)
Autocommit at 29.05.2022 @ 14:25
1 files changed, 7 insertions, 3 deletions
-rw-r--r--src/Models/CellFormula.cpp10
diff --git a/src/Models/CellFormula.cpp b/src/Models/CellFormula.cpp
index 76c9150..5252e30 100644
--- a/src/Models/CellFormula.cpp
+++ b/src/Models/CellFormula.cpp
@@ -68,24 +68,28 @@ void CellFormula::parseAndSetValue(const char* str) {
while (*str != ' ' && *str != '\0') str++;
while (*str == ' ') str++;
- cellToAdd = (*tableCells)[row][col];
currOp = *str;
+ cellToAdd = (*tableCells)[row][col];
}
else {
double val = atof(str);
while ((*str >= '0' && *str <= '9') || *str == ' ') str++;
+ currOp = *str;
localCells.add(CellDouble(val));
cellToAdd = &localCells[localCells.get_count() - 1];
- currOp = *str;
}
if (currOp == '^') currOp *= -1;
else if ((currOp == '+' || currOp == '-') && formula.get_count() != 0) {
Pair<Cell*, char>& prev = formula[formula.get_count() - 1];
- if (prev.right == '*' || prev.right == '/' || prev.right == '-') prev.right *= -1;
+ if (prev.right == '*' || prev.right == '/') prev.right *= -1;
}
+ if (currOp == '-') {
+ currOp = '+';
+ formula.add({new CellDouble(-1.0), '*'});
+ }
formula.add({cellToAdd, currOp});
}
}