push ex02

This commit is contained in:
LEO FIRMIN 2026-05-06 21:09:45 +02:00
parent 7376c1abca
commit 0f3bacbfcf
4 changed files with 51 additions and 12 deletions

View File

@ -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;
}

View File

@ -1,9 +1,9 @@
CXX = c++ CXX = c++
CXXFLAGS = -Wall -Wextra -Werror -std=c++98 CXXFLAGS = -Wall -Wextra -Werror -std=c++98
OBJDIR = obj OBJDIR = obj
SOURCES = Main.cpp RPN.cpp SOURCES = Main.cpp PmergeMe.cpp
OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o)) OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o))
NAME = RPN NAME = PmergeMe
all: $(NAME) all: $(NAME)

View File

@ -34,3 +34,24 @@ void PmergeMe::printVector() const
std::cout << *it << " "; std::cout << *it << " ";
std::cout << std::endl; 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");
}

View File

@ -1,13 +1,14 @@
#ifndef PMERGEME_HPP #ifndef PMERGEME_HPP
# define PMERGEME_HPP # define PMERGEME_HPP
# include <vector> #include <algorithm>
# include <deque> #include <ctime>
# include <string> #include <deque>
# include <stdexcept> #include <iostream>
# include <iostream> #include <sstream>
# include <ctime> #include <stdexcept>
# include <sstream> #include <string>
#include <vector>
class PmergeMe class PmergeMe
{ {
@ -23,13 +24,15 @@ class PmergeMe
std::vector<int> _vec; std::vector<int> _vec;
std::deque<int> _deq; std::deque<int> _deq;
void printDeque() const;
void printVector() const;
void parseInput(int ac, char **av); void parseInput(int ac, char **av);
void sortVector(); void sortVector();
void sortDeque(); void sortDeque();
void printDeque() const;
void printVector() const;
}; };
#endif #endif