Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Models / CellFormula.cpp
diff options
context:
space:
mode:
1 files changed, 7 insertions, 4 deletions
-rw-r--r--src/Models/CellFormula.cpp11
diff --git a/src/Models/CellFormula.cpp b/src/Models/CellFormula.cpp
index d47870d..1f5b766 100644
--- a/src/Models/CellFormula.cpp
+++ b/src/Models/CellFormula.cpp
@@ -6,16 +6,19 @@ double CellFormula::calculate(unsigned index) {
double lval = CellDouble(formula[index].left->getValue()).getValue();
switch(formula[index].right) {
- plus: return lval + calculate(index++);
- minus: return lval - calculate(index++);
- mult: return lval * calculate(index++);
- div: return lval / calculate(index++);
+ case plus: return lval + calculate(index++);
+ case minus: return lval - calculate(index++);
+ case mult: return lval * calculate(index++);
+ case div: double rval = calculate(index++);
+ if (rval == 0) throw std::overflow_error("Divide by zero exception");
+ return lval / rval;
default: return lval;
}
}
String CellFormula::getValueForPrint() {
double result = calculate();
+
return "";
}