diff --git a/cpp08/ex01/Span.cpp b/cpp08/ex01/Span.cpp index c608147..ffd335f 100644 --- a/cpp08/ex01/Span.cpp +++ b/cpp08/ex01/Span.cpp @@ -6,12 +6,17 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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; diff --git a/cpp08/ex01/Span.hpp b/cpp08/ex01/Span.hpp index 7925e5d..61345a7 100644 --- a/cpp08/ex01/Span.hpp +++ b/cpp08/ex01/Span.hpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 diff --git a/cpp08/ex01/main.cpp b/cpp08/ex01/main.cpp index 8bfe8ef..d7c6c70 100644 --- a/cpp08/ex01/main.cpp +++ b/cpp08/ex01/main.cpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 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); diff --git a/cpp08/ex02/MutantStack.hpp b/cpp08/ex02/MutantStack.hpp index b1d63a2..c7218dd 100644 --- a/cpp08/ex02/MutantStack.hpp +++ b/cpp08/ex02/MutantStack.hpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 #include +#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 > class MutantStack : public std::stack { diff --git a/cpp08/ex02/MutantStack.tpp b/cpp08/ex02/MutantStack.tpp index 6a66714..c4737f5 100644 --- a/cpp08/ex02/MutantStack.tpp +++ b/cpp08/ex02/MutantStack.tpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 MutantStack::MutantStack() : std::stack() { - std::cout << "MutantStack constructor called!" << std::endl; + std::cout << GREEN << "MutantStack constructor called!" << RESET << std::endl; } // Constructeur de copie template MutantStack::MutantStack(const MutantStack& other) : std::stack(other) { - std::cout << "Copy constructor called for MutantStack." << std::endl; + std::cout << CYAN << "Copy constructor called for MutantStack." << RESET << std::endl; } // Destructeur template MutantStack::~MutantStack() { - std::cout << "MutantStack is destroyed!" << std::endl; + std::cout << RED << "MutantStack is destroyed!" << RESET << std::endl; } // Opérateur d'assignation template diff --git a/cpp08/ex02/main.cpp b/cpp08/ex02/main.cpp index 82fbde0..9bb8c06 100644 --- a/cpp08/ex02/main.cpp +++ b/cpp08/ex02/main.cpp @@ -6,34 +6,118 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 +#include int main() { MutantStack 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::iterator it = mstack.begin(); MutantStack::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 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::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::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 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::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::iterator it = mstack.begin(); it != mstack.end(); ++it) + { + std::cout << *it << " "; + } + std::cout << "\n"; + return (0); -} \ No newline at end of file +}