mirror of
https://github.com/Ladebeze66/cpp-partie-2.git
synced 2025-12-15 13:46:56 +01:00
cp08
This commit is contained in:
parent
6e085b96b5
commit
8a57eedbd6
@ -6,12 +6,17 @@
|
||||
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/03 16:20:25 by fgras-ca #+# #+# */
|
||||
/* Updated: 2024/03/03 18:28:26 by fgras-ca ### ########.fr */
|
||||
/* Updated: 2024/03/13 13:19:00 by fgras-ca ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Span.hpp"
|
||||
|
||||
Span::Span()
|
||||
{
|
||||
std::cout << GREEN << "Default constructor Span called!" << RESET << std::endl;
|
||||
}
|
||||
|
||||
Span::Span(unsigned int N): capacity(N)
|
||||
{
|
||||
std::cout << GREEN << "Span constructor called!" << RESET << std::endl;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/03 15:53:40 by fgras-ca #+# #+# */
|
||||
/* Updated: 2024/03/03 16:49:04 by fgras-ca ### ########.fr */
|
||||
/* Updated: 2024/03/13 13:17:35 by fgras-ca ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
class Span
|
||||
{
|
||||
public:
|
||||
Span();
|
||||
Span(unsigned int N); //constructor
|
||||
Span(const Span& other); //copy constructor
|
||||
Span& operator=(const Span& other); //operateur d'assignation
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/03 17:00:49 by fgras-ca #+# #+# */
|
||||
/* Updated: 2024/03/03 17:59:58 by fgras-ca ### ########.fr */
|
||||
/* Updated: 2024/03/13 13:28:38 by fgras-ca ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -69,7 +69,7 @@ int main()
|
||||
std::set<int> uniqueNumbers;
|
||||
while(uniqueNumbers.size() < N)
|
||||
{
|
||||
int number = std::rand() % 100000; // Générer un nombre aléatoire entre 0 et 999
|
||||
int number = std::rand() % 100000; // Générer un nombre aléatoire entre 0 et 99999
|
||||
if(uniqueNumbers.insert(number).second)
|
||||
{ // Vérifie si l'insertion est réussie (élément n'était pas déjà présent)
|
||||
userSpan.addNumber(number);
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/03 18:22:10 by fgras-ca #+# #+# */
|
||||
/* Updated: 2024/03/03 18:35:45 by fgras-ca ### ########.fr */
|
||||
/* Updated: 2024/03/13 14:27:38 by fgras-ca ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -17,6 +17,17 @@
|
||||
#include <iostream>
|
||||
#include <deque>
|
||||
|
||||
#define RESET "\033[0m"
|
||||
#define BLACK "\033[30m"
|
||||
#define RED "\033[31m"
|
||||
#define GREEN "\033[32m"
|
||||
#define YELLOW "\033[33m"
|
||||
#define BLUE "\033[34m"
|
||||
#define MAGENTA "\033[35m"
|
||||
#define CYAN "\033[36m"
|
||||
#define WHITE "\033[37m"
|
||||
#define ORANGE "\033[38;5;214m"
|
||||
|
||||
template<typename T, typename Container = std::deque<T> >
|
||||
class MutantStack : public std::stack<T, Container>
|
||||
{
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/03 18:23:49 by fgras-ca #+# #+# */
|
||||
/* Updated: 2024/03/03 18:37:30 by fgras-ca ### ########.fr */
|
||||
/* Updated: 2024/03/13 13:49:40 by fgras-ca ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -14,19 +14,19 @@
|
||||
template<typename T, typename Container>
|
||||
MutantStack<T, Container>::MutantStack() : std::stack<T, Container>()
|
||||
{
|
||||
std::cout << "MutantStack constructor called!" << std::endl;
|
||||
std::cout << GREEN << "MutantStack constructor called!" << RESET << std::endl;
|
||||
}
|
||||
// Constructeur de copie
|
||||
template<typename T, typename Container>
|
||||
MutantStack<T, Container>::MutantStack(const MutantStack& other) : std::stack<T, Container>(other)
|
||||
{
|
||||
std::cout << "Copy constructor called for MutantStack." << std::endl;
|
||||
std::cout << CYAN << "Copy constructor called for MutantStack." << RESET << std::endl;
|
||||
}
|
||||
// Destructeur
|
||||
template<typename T, typename Container>
|
||||
MutantStack<T, Container>::~MutantStack()
|
||||
{
|
||||
std::cout << "MutantStack is destroyed!" << std::endl;
|
||||
std::cout << RED << "MutantStack is destroyed!" << RESET << std::endl;
|
||||
}
|
||||
// Opérateur d'assignation
|
||||
template<typename T, typename Container>
|
||||
|
||||
@ -6,34 +6,118 @@
|
||||
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/03/03 18:29:10 by fgras-ca #+# #+# */
|
||||
/* Updated: 2024/03/03 18:30:06 by fgras-ca ### ########.fr */
|
||||
/* Updated: 2024/03/13 15:05:22 by fgras-ca ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "MutantStack.hpp"
|
||||
#include <vector>
|
||||
#include <cstdlib>
|
||||
|
||||
int main()
|
||||
{
|
||||
MutantStack<int> mstack;
|
||||
|
||||
// Ajout d'éléments dans la MutantStack
|
||||
mstack.push(5);
|
||||
std::cout << GREEN << "Pushed: 5\n" << RESET;
|
||||
mstack.push(17);
|
||||
std::cout << mstack.top() << std::endl;
|
||||
std::cout << GREEN << "Pushed: 17\n" << RESET;
|
||||
|
||||
// Affichage du dernier élément ajouté (top de la pile)
|
||||
std::cout << YELLOW << "Current top: " << mstack.top() << RESET << std::endl; // Devrait afficher 17
|
||||
|
||||
// Suppression du dernier élément
|
||||
mstack.pop();
|
||||
std::cout << mstack.size() << std::endl;
|
||||
mstack.push(3);
|
||||
mstack.push(5);
|
||||
mstack.push(737);
|
||||
//[...]
|
||||
mstack.push(0);
|
||||
std::cout << RED << "Popped one element\n" << RESET;
|
||||
|
||||
// Affichage de la taille actuelle de la pile
|
||||
std::cout << BLUE << "Size after pop: " << mstack.size() << RESET << std::endl; // Devrait afficher 1
|
||||
|
||||
// Ajout de plusieurs éléments
|
||||
mstack.push(3); std::cout << GREEN << "Pushed: 3\n" << RESET;
|
||||
mstack.push(5); std::cout << GREEN << "Pushed: 5\n" << RESET;
|
||||
mstack.push(737); std::cout << GREEN << "Pushed: 737\n" << RESET;
|
||||
// [...]
|
||||
mstack.push(0); std::cout << GREEN << "Pushed: 0\n" << RESET;
|
||||
|
||||
// Itération à travers la MutantStack pour afficher tous les éléments
|
||||
std::cout << ORANGE << "\nIterating through MutantStack:\n" << RESET;
|
||||
MutantStack<int>::iterator it = mstack.begin();
|
||||
MutantStack<int>::iterator ite = mstack.end();
|
||||
++it;
|
||||
--it;
|
||||
while (it != ite)
|
||||
for (; it != ite; ++it)
|
||||
{
|
||||
std::cout << *it << std::endl;
|
||||
++it;
|
||||
std::cout << *it << std::endl; // Affiche chaque élément
|
||||
}
|
||||
|
||||
// Démonstration de la conversion d'une MutantStack en std::stack standard
|
||||
std::stack<int> s(mstack);
|
||||
std::cout << GREEN << "\nConverted to std::stack. Size: " << s.size() << RESET << std::endl;
|
||||
|
||||
while (!mstack.empty())
|
||||
{
|
||||
mstack.pop();
|
||||
}
|
||||
|
||||
std::cout << ORANGE << "Enter numbers to add to the stack (type 'done' to finish):" << RESET << std::endl;
|
||||
std::string input;
|
||||
while (std::cin >> input && input != "done")
|
||||
{
|
||||
mstack.push(std::atoi(input.c_str()));
|
||||
}
|
||||
|
||||
std::cout << MAGENTA << "Stack now contains:" << RESET << std::endl;
|
||||
for (MutantStack<int>::iterator it = mstack.begin(); it != mstack.end(); ++it)
|
||||
{
|
||||
std::cout << *it << " ";
|
||||
}
|
||||
std::cout << "\n";
|
||||
|
||||
std::cout << "Popping the last element." << std::endl;
|
||||
if (!mstack.empty()) {
|
||||
mstack.pop();
|
||||
}
|
||||
|
||||
std::cout << RED << "Stack after pop:" << RESET << std::endl;
|
||||
for (MutantStack<int>::iterator it = mstack.begin(); it != mstack.end(); ++it)
|
||||
{
|
||||
std::cout << *it << " ";
|
||||
}
|
||||
std::cout << "\n";
|
||||
|
||||
std::cout << RED << "Enter value to remove from stack:" << RESET << std::endl;
|
||||
int valueToRemove;
|
||||
std::cin >> valueToRemove;
|
||||
|
||||
std::vector<int> tempContainer;
|
||||
while (!mstack.empty())
|
||||
{
|
||||
if (mstack.top() == valueToRemove)
|
||||
{
|
||||
break; // Found the value to remove
|
||||
}
|
||||
tempContainer.push_back(mstack.top());
|
||||
mstack.pop();
|
||||
}
|
||||
|
||||
// Pop the target value if it was found
|
||||
if (!mstack.empty())
|
||||
{
|
||||
mstack.pop();
|
||||
}
|
||||
|
||||
// Push back the remaining elements
|
||||
for (std::vector<int>::reverse_iterator it = tempContainer.rbegin(); it != tempContainer.rend(); ++it)
|
||||
{
|
||||
mstack.push(*it);
|
||||
}
|
||||
|
||||
std::cout << GREEN << "Stack after removing the target value:" << RESET << std::endl;
|
||||
for (MutantStack<int>::iterator it = mstack.begin(); it != mstack.end(); ++it)
|
||||
{
|
||||
std::cout << *it << " ";
|
||||
}
|
||||
std::cout << "\n";
|
||||
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user