Something went wrong. Try again.
Java--'s standard template library projects.intra.42.fr/projects/cpp-module-08
Something went wrong. Try again.
1.5 kB · 55 lines
C++
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include <Span.hpp>#include <algorithm>#include <numeric>#include <stdexcept>
Span::Span() : size(0) {}
Span::Span(const Span& other) : numbers(other.numbers), size(other.size) {}
Span::Span(unsigned int size) : size(size) {}
void Span::addNumber(int number) { if (numbers.size() == size) throw std::length_error("Can't add number, it would exceed span size");
numbers.push_back(number);}
int Span::shortestSpan() { if (numbers.empty()) throw std::logic_error("Can't find shortest span, no numbers stored");
if (numbers.size() == 1) throw std::logic_error("Can't find shortest span, only one number stored");
std::vector<int> sortedNumbers(numbers); std::sort(sortedNumbers.begin(), sortedNumbers.end());
std::vector<int> differences(sortedNumbers.size()); std::adjacent_difference(sortedNumbers.begin(), sortedNumbers.end(), differences.begin());
return *std::min_element(differences.begin() + 1, differences.end());}
int Span::longestSpan() { if (numbers.empty()) throw std::logic_error("Can't find longest span, no numbers stored");
if (numbers.size() == 1) throw std::logic_error("Can't find longest span, only one number stored");
return *std::max_element(numbers.begin(), numbers.end()) - *std::min_element(numbers.begin(), numbers.end());}
Span& Span::operator=(const Span& other) { if (this == &other) return *this;
size = other.size; numbers = other.numbers;
return *this;}
Span::~Span() {}