diff options
1 files changed, 39 insertions, 0 deletions
| -rw-r--r-- | Year 1/Object-oriented Programming/Project 2/src/Models/CellDouble.cpp | 39 |
diff --git a/Year 1/Object-oriented Programming/Project 2/src/Models/CellDouble.cpp b/Year 1/Object-oriented Programming/Project 2/src/Models/CellDouble.cpp new file mode 100644 index 0000000..660fc88 --- /dev/null +++ b/Year 1/Object-oriented Programming/Project 2/src/Models/CellDouble.cpp @@ -0,0 +1,39 @@ +#include "CellDouble.h" +#include <cstring> + +CellDouble::CellDouble(double value) { + this->value = value; +} + +/*! + * Accepts a C-style string in the form "<+/-><digits>.<digits>" + */ +CellDouble::CellDouble(const char* str) { + value = 0; + bool negative = *str == '-'; + if (*str == '-' || *str == '+') str++; + + while (*str != '.') + value = value * 10 + (*(str++) - '0'); + str++; + for (unsigned div = 10; *str != '\0'; div *= 10) + value += (double)(*(str++) - '0') / div; + + if (negative) value *= -1; +} + +double CellDouble::getNumeralValue() const { + return value; +} + +String CellDouble::getValueForPrint() const { + return String() += value; +} + +void CellDouble::parseAndSetValue(const char* str) { + value = atof(str); +} + +void CellDouble::writeToFile(std::ofstream& file) { + file << value; +} |
