From 91975778890f65b93c35d91990c9754ac01b7284 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Fri, 11 Mar 2022 01:54:16 +0100 Subject: [PATCH] d07 ex02 a peu pres ok --- d07/ex01/headers/Iter.hpp | 2 +- d07/ex01/iter | Bin 0 -> 13480 bytes d07/ex02/Makefile | 82 +++++++++++++++++ d07/ex02/array | Bin 0 -> 38408 bytes d07/ex02/headers/Array.hpp | 50 ++++++++++ d07/ex02/headers/Fill.hpp | 15 +++ d07/ex02/headers/Iter.hpp | 11 +++ d07/ex02/headers/Print.hpp | 12 +++ d07/ex02/headers/colors.h | 25 +++++ d07/ex02/main.cpp | 183 +++++++++++++++++++++++++++++++++++++ 10 files changed, 379 insertions(+), 1 deletion(-) create mode 100755 d07/ex01/iter create mode 100644 d07/ex02/Makefile create mode 100755 d07/ex02/array create mode 100644 d07/ex02/headers/Array.hpp create mode 100644 d07/ex02/headers/Fill.hpp create mode 100644 d07/ex02/headers/Iter.hpp create mode 100644 d07/ex02/headers/Print.hpp create mode 100644 d07/ex02/headers/colors.h create mode 100644 d07/ex02/main.cpp diff --git a/d07/ex01/headers/Iter.hpp b/d07/ex01/headers/Iter.hpp index da5d402..e5fb242 100644 --- a/d07/ex01/headers/Iter.hpp +++ b/d07/ex01/headers/Iter.hpp @@ -2,7 +2,7 @@ # define ITER_HPP template< typename T, typename F > -void Iter(T *arr, size_t len, F & f) +void Iter(T &arr, size_t len, F & f) { for (size_t i = 0; i < len; i++) f(arr[i]); diff --git a/d07/ex01/iter b/d07/ex01/iter new file mode 100755 index 0000000000000000000000000000000000000000..09ad90cb4a5affec58416a8d521bee0aae421dee GIT binary patch literal 13480 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 O(5Ebo3#_Q9)BfMH_!SHQ literal 0 HcmV?d00001 diff --git a/d07/ex02/Makefile b/d07/ex02/Makefile new file mode 100644 index 0000000..2f18fa0 --- /dev/null +++ b/d07/ex02/Makefile @@ -0,0 +1,82 @@ +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # +# . name = value \ . += append to a variable # +# VARIABLES . value . != set result of command # +# . name is case sensitive . ?= set if not already set # +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # + +NAME = array + +#TYPE = c +TYPE = cpp + +ifeq "$(TYPE)" "c" + CC = c + EXT = c +else ifeq "$(TYPE)" "cpp" + CC = c++ + EXT = cpp +endif + +CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -g +ifeq "$(TYPE)" "cpp" + CFLAGS += -std=c++98 +endif + +VPATH = $(D_SRCS) + +LIBS = + +INCLUDES = -I$(D_HEADERS) + +D_SRCS = . +SRCS = main.cpp + +D_HEADERS = headers +HEADERS = colors.h \ + Array.hpp \ + Iter.hpp \ + Print.hpp \ + Fill.hpp + +D_OBJS = builds +OBJS = $(SRCS:%.$(EXT)=$(D_OBJS)/%.o) + +ifeq "$(D_OBJS)" "." + RM_OBJS = rm -f $(OBJS) +else + RM_OBJS = rm -rf $(D_OBJS) +endif + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # +# . target: prerequisites . $@ : target # +# RULES . recipe . $< : 1st prerequisite # +# . recipe . $^ : all prerequisites # +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # + +all: $(NAME) + +$(D_OBJS)/%.o: %.$(EXT) | $(D_OBJS) + $(CC) $(CFLAGS) -c $< -o $@ + +$(D_OBJS): + mkdir $@ + +$(OBJS): $(HEADERS:%=$(D_HEADERS)/%) + +$(NAME): $(OBJS) + $(CC) $(OBJS) -o $@ $(LIBS) + +leaks: $(NAME) + valgrind --leak-check=full --show-leak-kinds=all ./$(NAME) + +clean: + $(RM_OBJS) + +fclean: clean + rm -f $(NAME) + +re: fclean all + +.PHONY : all clean fclean re + diff --git a/d07/ex02/array b/d07/ex02/array new file mode 100755 index 0000000000000000000000000000000000000000..6c25150021faffe3a436d5e3715a4d4747f4a83f GIT binary patch literal 38408 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 + +template < typename T > +class Array { +public: + Array(unsigned int n = 0u) + : _size(n) + , _arr(new T[n]) {}; + ~Array() { delete [] _arr; }; + Array(Array const & src) : _arr(new T[0]) { *this = src; }; + Array &operator=(Array const & rhs) { + if (this == &rhs) + return (*this); + delete[] _arr; + _arr = new T[rhs._size]; + _size = rhs._size; + for (unsigned int it = 0; it < rhs._size && it < _size; it++) + _arr[it] = rhs._arr[it]; + return (*this); + }; + + // seen on luke's code : + // https://isocpp.org/wiki/faq/const-correctness#const-overloading + T & operator[](size_t i) { + if (i < 0 || i >= _size) + throw ArrayOutOfRangeException(); + return (_arr[i]); + }; + const T & operator[](size_t i) const { + if (i < 0 || i >= _size) + throw ArrayOutOfRangeException(); + return (_arr[i]); + }; + + size_t size() const { return (_size); }; + +private: + + class ArrayOutOfRangeException : public std::exception { + const char *what() const throw() { + return ("out of range array index");}; + }; + size_t _size; + T * _arr; +}; + +#endif diff --git a/d07/ex02/headers/Fill.hpp b/d07/ex02/headers/Fill.hpp new file mode 100644 index 0000000..d9b3432 --- /dev/null +++ b/d07/ex02/headers/Fill.hpp @@ -0,0 +1,15 @@ +#ifndef FILL_HPP +# define FILL_HPP + +# include +# include +# include "Iter.hpp" + +template< typename T, typename U > +void Fill(T & arr, size_t len, U const & e) { + for (size_t i = 0; i < len; i++) + arr[i] = e; +} + +#endif + diff --git a/d07/ex02/headers/Iter.hpp b/d07/ex02/headers/Iter.hpp new file mode 100644 index 0000000..0fcb38f --- /dev/null +++ b/d07/ex02/headers/Iter.hpp @@ -0,0 +1,11 @@ +#ifndef ITER_HPP +# define ITER_HPP + +template< typename T, typename F > +void Iter(T & arr, size_t len, F & f) +{ + for (size_t i = 0; i < len; i++) + f(arr[i]); +} + +#endif diff --git a/d07/ex02/headers/Print.hpp b/d07/ex02/headers/Print.hpp new file mode 100644 index 0000000..f3d79a3 --- /dev/null +++ b/d07/ex02/headers/Print.hpp @@ -0,0 +1,12 @@ +#ifndef PRINT_HPP +# define PRINT_HPP + +# include +# include + +template< typename T > +void Print(T const & e) { + std::cout << "[" << e << "]"; +} + +#endif diff --git a/d07/ex02/headers/colors.h b/d07/ex02/headers/colors.h new file mode 100644 index 0000000..0374e42 --- /dev/null +++ b/d07/ex02/headers/colors.h @@ -0,0 +1,25 @@ +#ifndef COLORS_H +# define COLORS_H + +# define GRAY "\e[0;30m" +# define RED "\e[0;31m" +# define GREEN "\e[0;32m" +# define YELLOW "\e[0;33m" +# define BLUE "\e[0;34m" +# define PURPLE "\e[0;35m" +# define CYAN "\e[0;36m" +# define WHITE "\e[0;37m" + +# define B_GRAY "\e[1;30m" +# define B_RED "\e[1;31m" +# define B_GREEN "\e[1;32m" +# define B_YELLOW "\e[1;33m" +# define B_BLUE "\e[1;34m" +# define B_PURPLE "\e[1;35m" +# define B_CYAN "\e[1;36m" +# define B_WHITE "\e[1;37m" + +# define RESET "\e[0m" + +#endif + diff --git a/d07/ex02/main.cpp b/d07/ex02/main.cpp new file mode 100644 index 0000000..07b9753 --- /dev/null +++ b/d07/ex02/main.cpp @@ -0,0 +1,183 @@ +#include +#include +#include // rand() +#include "colors.h" + +#include "Iter.hpp" +#include "Print.hpp" +#include "Array.hpp" +#include "Fill.hpp" + +#define N_TEST "7" + +int main() { + srand(time(NULL)); + int i = 0; + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "tests basic copy :" RESET "\n"; + { + Array a(13); + Array b(a); + + ::Fill(a, a.size(), 0); + ::Fill(b, b.size(), 0); + + std::cout << "a: "; + ::Iter(a, a.size(), Print); + std::cout << "\n"; + + std::cout << "b: "; + ::Iter(b, b.size(), Print); + std::cout << "\n"; + + ::Fill(a, a.size(), 2); + std::cout << B_BLUE "\na filled with 2" RESET "\n"; + + std::cout << "a: "; + ::Iter(a, a.size(), Print); + std::cout << "\n"; + + std::cout << "b: "; + ::Iter(b, b.size(), Print); + std::cout << "\n"; + + b = a; + ::Fill(a, a.size(), 3); + std::cout << B_BLUE "\nb = a\na filled with 3" RESET "\n"; + + std::cout << "a: "; + ::Iter(a, a.size(), Print); + std::cout << "\n"; + + std::cout << "b: "; + ::Iter(b, b.size(), Print); + std::cout << "\n"; + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "tests copy with different size:" RESET "\n"; + { + Array a(17); + Array b(13); + + ::Fill(a, a.size(), 2); + ::Fill(b, b.size(), 3); + std::cout << B_BLUE "\na filled with 2" RESET "\n"; + std::cout << B_BLUE "\nb filled with 3" RESET "\n"; + + std::cout << "a: "; + ::Iter(a, a.size(), Print); + std::cout << "\nb: "; + ::Iter(b, b.size(), Print); + std::cout << "\n"; + + b = a; + std::cout << B_BLUE "\nb = a" RESET "\n"; + + std::cout << "a: "; + ::Iter(a, a.size(), Print); + std::cout << "\nb: "; + ::Iter(b, b.size(), Print); + std::cout << "\n"; + + ::Fill(b, b.size(), 4); + std::cout << B_BLUE "\nb filled with 4" RESET "\n"; + + std::cout << "a: "; + ::Iter(a, a.size(), Print); + std::cout << "\nb: "; + ::Iter(b, b.size(), Print); + std::cout << "\n"; + } + + // tests luke + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "tests :" RESET "\n"; + { + Array a(10); + + std::cout << "a.size :" << a.size() << "\n"; + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "tests index correct :" RESET "\n"; + { + unsigned int l = 162; + Array arr(l); + + ::Fill(arr, arr.size(), 0); + + try { + arr[42] = 42; } + catch(std::exception& e) { + std::cerr << e.what() << '\n'; } + + std::cout << "print arr: "; + ::Iter(arr, l, Print); + std::cout << "\n"; + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "tests index < 0 :" RESET "\n"; + { + Array arr(162); + + try { + arr[-42] = 42; } + catch(std::exception& e) { + std::cerr << e.what() << '\n'; } + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "tests index >= array.size :" RESET "\n"; + { + Array arr(59); + + try { + arr[arr.size()] = 42; } + catch(std::exception& e) { + std::cerr << e.what() << '\n'; } + } + + std::cout << B_YELLOW "\n[" << ++i << "/" N_TEST "] " + << "tests :" RESET "\n"; + { + #define MAX_VAL 750 + Array numbers(MAX_VAL); + int* mirror = new int[MAX_VAL]; + for (int i = 0; i < MAX_VAL; i++) { + const int value = rand(); + numbers[i] = value; + mirror[i] = value; + } + //SCOPE + { + Array tmp = numbers; + Array test(tmp); + } + + for (int i = 0; i < MAX_VAL; i++) { + if (mirror[i] != numbers[i]) { + std::cerr << "didn't save the same value!!" << '\n'; + return 1; + } + } + try { + numbers[-2] = 0;} + catch(const std::exception& e) { + std::cerr << e.what() << '\n';} + try { + numbers[MAX_VAL] = 0;} + catch(const std::exception& e) { + std::cerr << e.what() << '\n';} + + for (int i = 0; i < MAX_VAL; i++) { + numbers[i] = rand(); + } + delete [] mirror; + } + + return 0; +} +