From c5431e4d321dbf0152e6826841c1ef5c1291ba5b Mon Sep 17 00:00:00 2001 From: Syndamia Date: Tue, 14 Jun 2022 15:38:50 +0300 Subject: Added files from project 2 (mirror) --- .../Project 2/src/Models/CellDouble.cpp | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Year 1/Object-oriented Programming/Project 2/src/Models/CellDouble.cpp (limited to 'Year 1/Object-oriented Programming/Project 2/src/Models/CellDouble.cpp') 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 + +CellDouble::CellDouble(double value) { + this->value = value; +} + +/*! + * Accepts a C-style string in the form "<+/->." + */ +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; +} -- cgit v1.3.1-23-gd82d