diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-04-14 20:42:26 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-04-14 20:42:26 +0200 |
| commit | 7ac812044bfe771178752a52d70b18bb297c1891 (patch) | |
| tree | 5f5faf0d627304cdfe1f1f45194b3da76653fff8 /cpp07 | |
| parent | efea8712aaf8169b1184cceb83705ca6b8783173 (diff) | |
| download | piscine_cpp-7ac812044bfe771178752a52d70b18bb297c1891.tar.gz piscine_cpp-7ac812044bfe771178752a52d70b18bb297c1891.tar.bz2 piscine_cpp-7ac812044bfe771178752a52d70b18bb297c1891.zip | |
cpp07 done, cpp06 ex00 and ex01 start
Diffstat (limited to 'cpp07')
| -rw-r--r-- | cpp07/ex00/Makefile | 35 | ||||
| -rw-r--r-- | cpp07/ex00/whatever.cpp | 55 | ||||
| -rw-r--r-- | cpp07/ex01/Makefile | 35 | ||||
| -rw-r--r-- | cpp07/ex01/iter.cpp | 63 | ||||
| -rw-r--r-- | cpp07/ex02/Array.hpp | 72 | ||||
| -rw-r--r-- | cpp07/ex02/Makefile | 35 | ||||
| -rw-r--r-- | cpp07/ex02/main.cpp | 81 |
7 files changed, 376 insertions, 0 deletions
diff --git a/cpp07/ex00/Makefile b/cpp07/ex00/Makefile new file mode 100644 index 0000000..660a45b --- /dev/null +++ b/cpp07/ex00/Makefile @@ -0,0 +1,35 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2020/04/14 19:48:34 by charles #+# #+# # +# Updated: 2020/04/14 19:58:14 by charles ### ########.fr # +# # +# **************************************************************************** # + +NAME = a_few_functions + +CXX = clang++ +CXXFLAGS = -std=c++98 -Wall -Wextra -Werror + +SRC = whatever.cpp +OBJ = $(SRC:.cpp=.o) + +all: $(NAME) + +$(NAME): $(OBJ) + $(CXX) -o $@ $< + +%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $^ + +clean: + rm -rf $(OBJ) + +fclean: clean + rm -rf $(NAME) + +re: fclean all diff --git a/cpp07/ex00/whatever.cpp b/cpp07/ex00/whatever.cpp new file mode 100644 index 0000000..ebebf8c --- /dev/null +++ b/cpp07/ex00/whatever.cpp @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* whatever.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/14 19:46:56 by charles #+# #+# */ +/* Updated: 2020/04/14 20:01:41 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <iostream> +#include <string> + +template<typename T> +void swap(T& a, T& b) +{ + T tmp = a; + a = b; + b = tmp; +} + +template<typename T> +T& min(T& a, T& b) +{ + return a < b ? a : b; +} + +template<typename T> +T& max(T& a, T& b) +{ + return a > b ? a : b; +} + +int main() +{ + int a = 2; + int b = 3; + + ::swap(a, b); + std::cout << "a = " << a << ", b = " << b << std::endl; + std::cout << "min( a, b ) = " << ::min( a, b ) << std::endl; + std::cout << "max( a, b ) = " << ::max( a, b ) << std::endl; + + std::string c = "chaine1"; + std::string d = "chaine2"; + + ::swap(c, d); + std::cout << "c = " << c << ", d = " << d << std::endl; + std::cout << "min( c, d ) = " << ::min( c, d ) << std::endl; + std::cout << "max( c, d ) = " << ::max( c, d ) << std::endl; + + return 0; +} diff --git a/cpp07/ex01/Makefile b/cpp07/ex01/Makefile new file mode 100644 index 0000000..45180bc --- /dev/null +++ b/cpp07/ex01/Makefile @@ -0,0 +1,35 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2020/04/14 19:48:34 by charles #+# #+# # +# Updated: 2020/04/14 20:02:14 by charles ### ########.fr # +# # +# **************************************************************************** # + +NAME = iter + +CXX = clang++ +CXXFLAGS = -std=c++98 -Wall -Wextra -Werror + +SRC = iter.cpp +OBJ = $(SRC:.cpp=.o) + +all: $(NAME) + +$(NAME): $(OBJ) + $(CXX) -o $@ $< + +%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $^ + +clean: + rm -rf $(OBJ) + +fclean: clean + rm -rf $(NAME) + +re: fclean all diff --git a/cpp07/ex01/iter.cpp b/cpp07/ex01/iter.cpp new file mode 100644 index 0000000..80b29d3 --- /dev/null +++ b/cpp07/ex01/iter.cpp @@ -0,0 +1,63 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* iter.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/14 20:02:19 by charles #+# #+# */ +/* Updated: 2020/04/14 20:12:17 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <iostream> + +template<typename T> +void iter(T* ptr, size_t len, void (*f)(T* x)) +{ + for (size_t i = 0; i < len; i++) + f(ptr + i); +} + +template<typename T> +void timeTwo(T* x) +{ + *x *= 2; +} + +int main() +{ + int intArray[] = {1, 2, 3, 4, 10, 20, 30, -1, -2}; + size_t intArraySize = sizeof(intArray) / sizeof(int); + for (size_t i = 0; i < intArraySize; i++) + std::cout << intArray[i] << ", "; + std::cout << std::endl; + iter(intArray, intArraySize, timeTwo<int>); + for (size_t i = 0; i < intArraySize; i++) + std::cout << intArray[i] << ", "; + std::cout << std::endl; + std::cout << "--------------------------------------" << std::endl; + + float floatArray[] = {1.1, 2.2, 3.3, 4.3, 10.001, 20.9, 30.3, -1.2, -2.4}; + size_t floatArraySize = sizeof(floatArray) / sizeof(float); + for (size_t i = 0; i < floatArraySize; i++) + std::cout << floatArray[i] << ", "; + std::cout << std::endl; + iter(floatArray, floatArraySize, timeTwo<float>); + for (size_t i = 0; i < floatArraySize; i++) + std::cout << floatArray[i] << ", "; + std::cout << std::endl; + std::cout << "--------------------------------------" << std::endl; + + unsigned int uintArray[] = {1, 2, 3, 4, 10, 20, 30, 100, 2000}; + size_t uintArraySize = sizeof(uintArray) / sizeof(unsigned int); + for (size_t i = 0; i < uintArraySize; i++) + std::cout << uintArray[i] << ", "; + std::cout << std::endl; + iter(uintArray, uintArraySize, timeTwo<unsigned int>); + for (size_t i = 0; i < uintArraySize; i++) + std::cout << uintArray[i] << ", "; + std::cout << std::endl; + + return 0; +} diff --git a/cpp07/ex02/Array.hpp b/cpp07/ex02/Array.hpp new file mode 100644 index 0000000..fec8698 --- /dev/null +++ b/cpp07/ex02/Array.hpp @@ -0,0 +1,72 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Array.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/14 20:14:07 by charles #+# #+# */ +/* Updated: 2020/04/14 20:41:25 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef ARRAP_HPP +# define ARRAP_HPP + +#include <exception> + +template<typename T> +class Array +{ +public: + Array() : m_under(new T[0]), m_size(0) + {} + + Array(unsigned int n) : m_under(new T[n]()), m_size(n) + {} + + Array(Array const& other) : m_under(new T[other.m_size]), m_size(other.m_size) + { + for (unsigned int i = 0; i < m_size; i++) + m_under[i] = other.m_under[i]; + } + + void operator=(Array const& other) + { + delete [] m_under; + m_size = other.m_size; + m_under = new T[m_size]; + for (unsigned int i = 0; i < m_size; i++) + m_under[i] = other.m_under[i]; + } + + ~Array() + { + delete [] m_under; + } + + T& operator[](unsigned int n) + { + if (n >= m_size) + throw std::exception(); + return m_under[n]; + } + + T const& operator[](unsigned int n) const + { + if (n >= m_size) + throw std::exception(); + return m_under[n]; + } + + unsigned int size() const + { + return m_size; + } + +private: + T* m_under; + unsigned int m_size; +}; + +#endif diff --git a/cpp07/ex02/Makefile b/cpp07/ex02/Makefile new file mode 100644 index 0000000..239a977 --- /dev/null +++ b/cpp07/ex02/Makefile @@ -0,0 +1,35 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2020/04/14 19:48:34 by charles #+# #+# # +# Updated: 2020/04/14 20:39:03 by charles ### ########.fr # +# # +# **************************************************************************** # + +NAME = array + +CXX = clang++ +CXXFLAGS = -std=c++98 -Wall -Wextra -Werror + +SRC = main.cpp +OBJ = $(SRC:.cpp=.o) + +all: $(NAME) + +$(NAME): $(OBJ) + $(CXX) -o $@ $^ + +%.o: %.cpp Array.hpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + rm -rf $(OBJ) + +fclean: clean + rm -rf $(NAME) + +re: fclean all diff --git a/cpp07/ex02/main.cpp b/cpp07/ex02/main.cpp new file mode 100644 index 0000000..251d697 --- /dev/null +++ b/cpp07/ex02/main.cpp @@ -0,0 +1,81 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/04/14 20:25:44 by charles #+# #+# */ +/* Updated: 2020/04/14 20:41:40 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include <iostream> +#include "Array.hpp" + +int main() +{ + Array<int> a; + std::cout << a.size() << std::endl; + try + { + std::cout << a[0] << std::endl; + } + catch (std::exception e) + { + std::cout << e.what() << std::endl; + } + std::cout << "------------------------" << std::endl; + + Array<int> b(3); + std::cout << b.size() << std::endl; + std::cout << b[0] << ", " << b[1] << ", " << b[2] << std::endl; + b[0] = 1; + b[1] = 2; + b[2] = 3; + std::cout << b[0] << ", " << b[1] << ", " << b[2] << std::endl; + try + { + std::cout << b[3] << std::endl; + } + catch (std::exception e) + { + std::cout << e.what() << std::endl; + } + std::cout << "------------------------" << std::endl; + + Array<float> c(3); + std::cout << c.size() << std::endl; + c[0] = 1.3; + c[1] = 2.2; + c[2] = 3.1; + std::cout << c[0] << ", " << c[1] << ", " << c[2] << std::endl; + try + { + std::cout << c[3] << std::endl; + } + catch (std::exception e) + { + std::cout << e.what() << std::endl; + } + std::cout << "------------------------" << std::endl; + + Array<float> d(c); + std::cout << d.size() << std::endl; + d[0] = 10.12; + std::cout << d[0] << " <> " << c[0] << std::endl; + std::cout << d[1] << " <> " << c[1] << std::endl; + std::cout << d[2] << " <> " << c[2] << std::endl; + std::cout << "------------------------" << std::endl; + + Array<float> f; + std::cout << f.size() << std::endl; + f = c; + std::cout << f.size() << std::endl; + f[0] = 10.12; + std::cout << f[0] << " <> " << c[0] << std::endl; + std::cout << f[1] << " <> " << c[1] << std::endl; + std::cout << f[2] << " <> " << c[2] << std::endl; + + return 0; +} |
