first push cpp08
This commit is contained in:
parent
b9acd5add2
commit
34ee83b845
@ -6,16 +6,17 @@
|
||||
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2022/08/07 20:32:52 by apommier #+# #+# #
|
||||
# Updated: 2022/08/07 20:33:01 by apommier ### ########.fr #
|
||||
# Updated: 2022/08/07 22:48:52 by apommier ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
NAME = a.out
|
||||
SRCS = main.cpp
|
||||
SRCS = main.cpp\
|
||||
Span.cpp
|
||||
|
||||
OBJS = ${SRCS:.cpp=.o}
|
||||
CC = c++
|
||||
CFLAGS = -Wall -Wextra -Werror -std=c++98
|
||||
CFLAGS = -Wall -Wextra -Werror -std=c++98 -g
|
||||
RM = rm -rf
|
||||
|
||||
.cpp.o:
|
||||
|
||||
@ -6,10 +6,12 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/08/07 20:32:51 by apommier #+# #+# */
|
||||
/* Updated: 2022/08/07 22:04:55 by apommier ### ########.fr */
|
||||
/* Updated: 2022/08/07 23:09:03 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Span.hpp"
|
||||
|
||||
Span::Span()
|
||||
{
|
||||
this->_storageSize = 0;
|
||||
@ -30,24 +32,43 @@ Span::~Span()
|
||||
|
||||
}
|
||||
|
||||
void Span::addNumber()
|
||||
void Span::addNumber(int nbr)
|
||||
{
|
||||
|
||||
if ((int)this->_storage.size() >= this->_storageSize)
|
||||
throw Span::fullContainer();
|
||||
this->_storage.push_back(nbr);
|
||||
}
|
||||
|
||||
int Span::shortestSpan()
|
||||
{
|
||||
std::vector<int> tmp = this->_storage;
|
||||
|
||||
if (this->_storage.size() < 2)
|
||||
throw Span::notEnoughNumber();
|
||||
std::sort(tmp.begin(), tmp.end());
|
||||
int ret = tmp[1] - tmp[0];
|
||||
|
||||
for (int i = 1; i < (int)tmp.size() - 1; i++)
|
||||
{
|
||||
//std::cout << "ret= " << ret << " | value = " << tmp[i + 1] - tmp[i] << " | tmp[i]= " << tmp[i+1] << " " << tmp[i]<< std::endl;
|
||||
if (tmp[i + 1] - tmp[i] < ret)
|
||||
ret = tmp[i + 1] - tmp[i];
|
||||
}
|
||||
return (ret);
|
||||
}
|
||||
|
||||
int Span::longestSpan()
|
||||
{
|
||||
|
||||
if (this->_storage.size() < 2)
|
||||
throw Span::notEnoughNumber();
|
||||
return (*max_element(this->_storage.begin(), this->_storage.end()) - *min_element(this->_storage.begin(), this->_storage.end()));
|
||||
}
|
||||
|
||||
void Span::addRangeOfIterators()
|
||||
void Span::addRangeOfIterators(int *nb, int size)
|
||||
{
|
||||
|
||||
if ((int)this->_storage.size() > this->_storageSize - size)
|
||||
throw Span::fullContainer();
|
||||
this->_storage.insert(this->_storage.end(), nb, nb + size);
|
||||
}
|
||||
|
||||
Span &Span::operator=( const Span &rhs )
|
||||
|
||||
@ -6,10 +6,14 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/08/07 20:33:52 by apommier #+# #+# */
|
||||
/* Updated: 2022/08/07 22:04:22 by apommier ### ########.fr */
|
||||
/* Updated: 2022/08/07 23:23:13 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
class Span{
|
||||
public :
|
||||
|
||||
@ -17,17 +21,17 @@ class Span{
|
||||
Span(unsigned int size);
|
||||
Span(const Span ©);
|
||||
~Span();
|
||||
void addNumber();
|
||||
void addNumber(int);
|
||||
int shortestSpan();
|
||||
int longestSpan();
|
||||
void addRangeOfIterators();
|
||||
void addRangeOfIterators(int *nb, int size);
|
||||
|
||||
Span &operator=( const Span &rhs );
|
||||
|
||||
class fullContainer : public std::exception {
|
||||
char const *what() const throw()
|
||||
{
|
||||
return ("Container is full !");
|
||||
return ("Container can't accept those number because he doesn't have enough memory !");
|
||||
}
|
||||
};
|
||||
|
||||
@ -42,4 +46,4 @@ class Span{
|
||||
|
||||
std::vector<int> _storage;
|
||||
int _storageSize;
|
||||
}
|
||||
};
|
||||
@ -6,11 +6,111 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/08/07 20:32:50 by apommier #+# #+# */
|
||||
/* Updated: 2022/08/07 20:33:25 by apommier ### ########.fr */
|
||||
/* Updated: 2022/08/07 23:16:52 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Span.hpp"
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
Span sp = Span(5);
|
||||
sp.addNumber(6);
|
||||
sp.addNumber(-3);
|
||||
sp.addNumber(17);
|
||||
sp.addNumber(9);
|
||||
sp.addNumber(11);
|
||||
try
|
||||
{
|
||||
sp.addNumber(110);
|
||||
std::cout << "Container just accept some new values\n";
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
}
|
||||
std::cout << "shortest span : "<< sp.shortestSpan() << std::endl;
|
||||
std::cout << "longest span : " << sp.longestSpan() << std::endl;
|
||||
|
||||
std::cout << "\n======================Multiple nbr========================\n";
|
||||
Span sp2 = Span(15);
|
||||
sp2.addNumber(6);
|
||||
sp2.addNumber(-3);
|
||||
sp2.addNumber(17);
|
||||
sp2.addNumber(9);
|
||||
sp2.addNumber(11);
|
||||
try
|
||||
{
|
||||
int intTab[] = {0,1,2,3,4,5,6,7,8,-9};
|
||||
sp2.addRangeOfIterators(intTab, 10);
|
||||
std::cout << "Container just accept some new values\n";
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
}
|
||||
//bad
|
||||
try
|
||||
{
|
||||
int intTab2[] = {0,1,2,3,4,5,6,7,8,-9};
|
||||
sp2.addRangeOfIterators(intTab2, 10);
|
||||
std::cout << "Container just accept some new values\n";
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
}
|
||||
std::cout << "shortest span : "<< sp2.shortestSpan() << std::endl;
|
||||
std::cout << "longest span : " << sp2.longestSpan() << std::endl;
|
||||
std::cout << "\n======================Only one or two digit========================\n";
|
||||
Span sp3 = Span(15);
|
||||
std::cout << "----with zero digit----\n";
|
||||
try
|
||||
{
|
||||
sp3.shortestSpan();
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
}
|
||||
try
|
||||
{
|
||||
sp3.longestSpan();
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
}
|
||||
|
||||
std::cout << "----with one digit----\n";
|
||||
sp3.addNumber(6);
|
||||
try
|
||||
{
|
||||
sp3.shortestSpan();
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
}
|
||||
try
|
||||
{
|
||||
sp3.longestSpan();
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
}
|
||||
|
||||
std::cout << "----with two digit----\n";
|
||||
sp3.addNumber(6);
|
||||
try
|
||||
{
|
||||
std::cout << "shortest span : "<< sp3.shortestSpan() << std::endl;
|
||||
std::cout << "longest span : " << sp3.longestSpan() << std::endl;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* MutantStack.hpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/08/07 23:20:42 by apommier #+# #+# */
|
||||
/* Updated: 2022/08/07 23:51:47 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <stack>
|
||||
#include <list>
|
||||
|
||||
template<typename T>
|
||||
class MutantStack : public std::stack<T>{
|
||||
public :
|
||||
|
||||
MutantStack<T>(){}
|
||||
MutantStack<T>( const MutantStack<T> &src )
|
||||
{
|
||||
*this = src;
|
||||
}
|
||||
~MutantStack<T>(){}
|
||||
|
||||
MutantStack<T> &operator=(const MutantStack<T> &rhs)
|
||||
{
|
||||
(void)rhs;
|
||||
return *this;
|
||||
}
|
||||
|
||||
typedef typename std::stack<T>::container_type::iterator iterator; //simplify name
|
||||
|
||||
iterator begin()
|
||||
{
|
||||
return this->c.begin(); //std::cbegin | std::begin
|
||||
}
|
||||
iterator end()
|
||||
{
|
||||
return this->c.end();
|
||||
}
|
||||
|
||||
private :
|
||||
|
||||
};
|
||||
@ -0,0 +1,67 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* main.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/08/07 23:20:40 by apommier #+# #+# */
|
||||
/* Updated: 2022/08/07 23:37:58 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "MutantStack.hpp"
|
||||
|
||||
int main_2()
|
||||
{
|
||||
std::list<int> mstack;
|
||||
mstack.push_back(5);
|
||||
mstack.push_back(17);
|
||||
std::cout << mstack.back() << std::endl;
|
||||
mstack.pop_back();
|
||||
std::cout << mstack.size() << std::endl;
|
||||
mstack.push_back(3);
|
||||
mstack.push_back(5);
|
||||
mstack.push_back(737);
|
||||
//[...]
|
||||
mstack.push_back(0);
|
||||
std::list<int>::iterator it = mstack.begin();
|
||||
std::list<int>::iterator ite = mstack.end();
|
||||
++it;
|
||||
--it;
|
||||
while (it != ite)
|
||||
{
|
||||
std::cout << *it << std::endl;
|
||||
++it;
|
||||
}
|
||||
std::list<int> s(mstack);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
MutantStack<int> mstack;
|
||||
mstack.push(5);
|
||||
mstack.push(17);
|
||||
std::cout << mstack.top() << std::endl;
|
||||
mstack.pop();
|
||||
std::cout << mstack.size() << std::endl;
|
||||
mstack.push(3);
|
||||
mstack.push(5);
|
||||
mstack.push(737);
|
||||
//[...]
|
||||
mstack.push(0);
|
||||
MutantStack<int>::iterator it = mstack.begin();
|
||||
MutantStack<int>::iterator ite = mstack.end();
|
||||
++it;
|
||||
--it;
|
||||
while (it != ite)
|
||||
{
|
||||
std::cout << *it << std::endl;
|
||||
++it;
|
||||
}
|
||||
std::stack<int> s(mstack);
|
||||
std::cout << "\n====================LIST CONTAINER TURN====================\n";
|
||||
main_2();
|
||||
return (0);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user