From 0f3bacbfcf3f9b52519a376bc90d50db3f91576f Mon Sep 17 00:00:00 2001 From: lfirmin Date: Wed, 6 May 2026 21:09:45 +0200 Subject: [PATCH] push ex02 --- ex02/Main.cpp | 15 +++++++++++++++ ex02/Makefile | 4 ++-- ex02/PmergeMe.cpp | 21 +++++++++++++++++++++ ex02/PmergeMe.hpp | 23 +++++++++++++---------- 4 files changed, 51 insertions(+), 12 deletions(-) diff --git a/ex02/Main.cpp b/ex02/Main.cpp index e69de29..e8c1d34 100644 --- a/ex02/Main.cpp +++ b/ex02/Main.cpp @@ -0,0 +1,15 @@ +#include "PmergeMe.hpp" + +int main(int ac, char **av) +{ + PmergeMe pm; + try { + pm.parseInput(ac, av); + pm.printVector(); + pm.printDeque(); + } catch (const std::exception &e) { + std::cerr << e.what() << std::endl; + return 1; + } + return 0; +} diff --git a/ex02/Makefile b/ex02/Makefile index fc149a7..c5ca405 100644 --- a/ex02/Makefile +++ b/ex02/Makefile @@ -1,9 +1,9 @@ CXX = c++ CXXFLAGS = -Wall -Wextra -Werror -std=c++98 OBJDIR = obj -SOURCES = Main.cpp RPN.cpp +SOURCES = Main.cpp PmergeMe.cpp OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o)) -NAME = RPN +NAME = PmergeMe all: $(NAME) diff --git a/ex02/PmergeMe.cpp b/ex02/PmergeMe.cpp index 047ca45..e1963c0 100644 --- a/ex02/PmergeMe.cpp +++ b/ex02/PmergeMe.cpp @@ -34,3 +34,24 @@ void PmergeMe::printVector() const std::cout << *it << " "; std::cout << std::endl; } + +void PmergeMe::parseInput(int ac, char **av) +{ + std::string token; + int n; + + for (int i = 1; i < ac; i++) { + std::istringstream ss(av[i]); + while (ss >> token) { + std::istringstream iss(token); + if (!(iss >> n) || !iss.eof() || n < 0) + throw std::runtime_error("Error"); + if (std::find(_vec.begin(), _vec.end(), n) != _vec.end()) + throw std::runtime_error("Error"); + _vec.push_back(n); + _deq.push_back(n); + } + } + if (_vec.empty()) + throw std::runtime_error("Error"); +} diff --git a/ex02/PmergeMe.hpp b/ex02/PmergeMe.hpp index 6ae2b38..432a686 100644 --- a/ex02/PmergeMe.hpp +++ b/ex02/PmergeMe.hpp @@ -1,13 +1,14 @@ #ifndef PMERGEME_HPP # define PMERGEME_HPP -# include -# include -# include -# include -# include -# include -# include +#include +#include +#include +#include +#include +#include +#include +#include class PmergeMe { @@ -23,13 +24,15 @@ class PmergeMe std::vector _vec; std::deque _deq; - void parseInput(int ac, char **av); + void printDeque() const; + void printVector() const; + + void parseInput(int ac, char **av); void sortVector(); void sortDeque(); - void printDeque() const; - void printVector() const; + }; #endif