From 571dc57f812a685bda7bd3baf8aaf2ef56feae65 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sat, 28 Mar 2026 16:19:58 +0200 Subject: feat(Week05): Add solutions --- Week05/Exercise01/NumSeries.cpp | 88 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Week05/Exercise01/NumSeries.cpp (limited to 'Week05/Exercise01/NumSeries.cpp') diff --git a/Week05/Exercise01/NumSeries.cpp b/Week05/Exercise01/NumSeries.cpp new file mode 100644 index 0000000..be8c816 --- /dev/null +++ b/Week05/Exercise01/NumSeries.cpp @@ -0,0 +1,88 @@ +#include "NumSeries.h" +#include + +void NumSeries::free() { + delete[] numbers; +} + +void NumSeries::copyFrom(const NumSeries& other) { + allocated = other.allocated; + size = other.size; + + numbers = new double[allocated]; + for (unsigned i = 0; i < size; ++i) + numbers[i] = other.numbers[i]; +} + +void NumSeries::resize() { + allocated *= 2; + + double* newNumbers = new double[allocated]; + for (unsigned i = 0; i < size; ++i) + newNumbers[i] = numbers[i]; + + delete[] numbers; + numbers = newNumbers; +} + +NumSeries::NumSeries() { + numbers = nullptr; + allocated = size = 0; +} + +NumSeries::~NumSeries() { + free(); +} + +NumSeries::NumSeries(const NumSeries& other) { + copyFrom(other); +} + +NumSeries& NumSeries::operator=(const NumSeries& other) { + if (this != &other) { + free(); + copyFrom(other); + } + return *this; +} + +NumSeries::NumSeries(NumSeries&& other) { + numbers = other.numbers; + allocated = other.allocated; + size = other.size; + + other.numbers = nullptr; + other.allocated = 0; + other.size = 0; +} + +NumSeries& NumSeries::operator=(NumSeries&& other) { + if (this != &other) { + free(); + + numbers = other.numbers; + allocated = other.allocated; + size = other.size; + + other.numbers = nullptr; + other.allocated = 0; + other.size = 0; + } + return *this; +} + +void NumSeries::Push(double element) { + if (size >= allocated) + resize(); + numbers[size++] = element; +} + +double NumSeries::At(unsigned index) const { + if (index >= size) + return NAN; + return numbers[index]; +} + +unsigned NumSeries::Length() const { + return size; +} -- cgit v1.3.1-23-gd82d