From 52a866baba3cbb05ecf0be88f1b50991b4a26b52 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 15 Apr 2020 09:28:09 +0200 Subject: cpp08 probably done, ex02 has a useless file in this implementation? --- cpp08/ex01/span.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 cpp08/ex01/span.cpp (limited to 'cpp08/ex01/span.cpp') diff --git a/cpp08/ex01/span.cpp b/cpp08/ex01/span.cpp new file mode 100644 index 0000000..a9bcaf6 --- /dev/null +++ b/cpp08/ex01/span.cpp @@ -0,0 +1,67 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* span.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/15 06:57:44 by charles #+# #+# */ +/* Updated: 2020/04/15 07:22:42 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "span.hpp" + +Span::Span() : m_under(new int[0]), m_size(0), m_fillIndex(0) +{} + +Span::Span(Span const& other) + : m_under(new int[other.m_size]), + m_size(other.m_size), + m_fillIndex(other.m_fillIndex) +{ + for (unsigned int i = 0; i < m_fillIndex; i++) + m_under[i] = other.m_under[i]; +} + +void Span::operator=(Span const& other) +{ + delete [] m_under; + m_size = other.m_size; + m_under = new int[m_size]; + m_fillIndex = other.m_fillIndex; + for (unsigned int i = 0; i < m_fillIndex; i++) + m_under[i] = other.m_under[i]; +} + +Span::~Span() +{ + delete [] m_under; +} + +Span::Span(unsigned int n) : m_under(new int[n]), m_size(n), m_fillIndex(0) +{} + +void Span::addNumber(int x) +{ + if (m_fillIndex == m_size) + throw std::exception(); + m_under[m_fillIndex] = x; + m_fillIndex++; +} + +int Span::shortestSpan() const +{ + if (m_size <= 1) + throw std::exception(); + std::sort(m_under, m_under + m_fillIndex); + return m_under[1] - m_under[0]; +} + +int Span::longestSpan() const +{ + if (m_size <= 1) + throw std::exception(); + std::sort(m_under, m_under + m_fillIndex); + return m_under[m_fillIndex - 1] - m_under[0]; +} -- cgit