feat(09): Finishing the main for usage in correction

This commit is contained in:
Raphael 2025-05-07 14:58:23 +02:00
parent dd8c8debde
commit 98eae2bd0e

View file

@ -6,11 +6,12 @@
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/05/01 14:45:40 by rparodi #+# #+# */
/* Updated: 2025/05/07 12:04:00 by rparodi ### ########.fr */
/* Updated: 2025/05/07 14:51:45 by rparodi ### ########.fr */
/* */
/* ************************************************************************** */
#include "PmergeMe.hpp"
#include <ctime>
int check_input(int argc, char **argv) {
for (size_t i = 1; i < static_cast<size_t>(argc); i++) {
@ -22,19 +23,6 @@ int check_input(int argc, char **argv) {
return (0);
}
std::vector<int> convert_in_vector(int argc, char **argv) {
std::vector<int> vec;
for (size_t i = 1 ; i < static_cast<size_t>(argc); i++) {
errno = 0;
int value = std::strtol(argv[i], nullptr, 10);
if (errno == ERANGE || value < 0) {
std::cerr << CLR_RED << "Error: I don't accept number over INT_MAX" << CLR_RESET << std::endl;
std::exit(1);
}
vec.push_back(value);
}
return vec;
}
int main(int argc, char **argv) {
if (DEBUG)
@ -53,6 +41,30 @@ int main(int argc, char **argv) {
std::cerr << CLR_BLUE << "\tValue of args: [" << argv[check] << "]" << CLR_RESET << std::endl;
return 1;
}
convert_in_vector(argc, argv);
struct timeval start, end;
std::cout << CLR_YELLOW << "\tUsing std::" << CLR_GOLD << "vector" << CLR_RESET << std::endl;
std::vector<int> vec = convert<std::vector<int> >(argc, argv);
print_container(vec, false);
gettimeofday(&start, NULL);
FordJohnson(vec);
gettimeofday(&end, NULL);
print_container(vec, false);
long vecTime = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec);
std::cout << std::endl << std::endl;
std::cout << CLR_YELLOW << "\tUsing std::" << CLR_GOLD << "deque" << CLR_RESET << std::endl;
std::deque<int> deq = convert<std::deque<int> >(argc, argv);
print_container(deq, false);
gettimeofday(&start, NULL);
FordJohnson(deq);
gettimeofday(&end, NULL);
print_container(deq, true);
long deqTime = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec - start.tv_usec);
std::cout << std::endl << CLR_YELLOW << "\tTime for Ford-Johnson" << CLR_RESET << std::endl;
std::cout << CLR_YELLOW << "Time for vector" << " : " << CLR_GOLD << vecTime << CLR_YELLOW << " us" << CLR_RESET << std::endl;
std::cout << CLR_YELLOW << "Time for deque"<< " : " << CLR_GOLD << deqTime << CLR_YELLOW << " us" << CLR_RESET << std::endl;
return 0;
}