Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Object-oriented Programming / Project 2 / src / Models / CellDouble.cpp
diff options
context:
space:
mode:
Commitc5431e4d321dbf0152e6826841c1ef5c1291ba5b (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-06-14 15:38:50 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-06-14 15:38:50 +0300
Filesbe7dbd4b6188924bb3a1a9398169526f236b09b9 /Year 1/Object-oriented Programming/Project 2/src/Models/CellDouble.cpp
uni-projects-c5431e4d321dbf0152e6826841c1ef5c1291ba5b.tar
uni-projects-c5431e4d321dbf0152e6826841c1ef5c1291ba5b.tar.gz
uni-projects-c5431e4d321dbf0152e6826841c1ef5c1291ba5b.zip
Parentccedf6f5d89f375580ff6af40296aab953f9cd09 (diff)
Added files from project 2 (mirror)
1 files changed, 39 insertions, 0 deletions
-rw-r--r--Year 1/Object-oriented Programming/Project 2/src/Models/CellDouble.cpp39
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;
+}