From 3c9267c87f927d7dcc662f431e01fed784658999 Mon Sep 17 00:00:00 2001 From: narnaud Date: Mon, 5 Sep 2022 12:34:01 +0200 Subject: [PATCH] update --- CPP02/ex01/Fixed.cpp | 22 +++---- CPP02/ex01/main.cpp | 12 ++-- CPP03/ex00/ClapTrap.cpp | 23 +++---- CPP03/ex00/ClapTrap.hpp | 8 +-- CPP03/ex01/ClapTrap.cpp | 4 +- CPP03/ex01/ClapTrap.hpp | 6 +- CPP03/ex01/ScavTrap.cpp | 7 +- CPP03/ex01/ScavTrap.hpp | 8 +-- CPP03/ex01/claptrap | Bin 33588 -> 0 bytes CPP03/ex02/ClapTrap.cpp | 6 +- CPP03/ex02/ClapTrap.hpp | 8 +-- CPP03/ex02/FragTrap.cpp | 7 +- CPP03/ex02/FragTrap.hpp | 8 +-- CPP03/ex02/ScavTrap.cpp | 7 +- CPP03/ex02/ScavTrap.hpp | 8 +-- CPP03/ex02/claptrap | Bin 33588 -> 0 bytes CPP03/ex03/ClapTrap.cpp | 96 ++++++++++++++++++++++++++++ CPP03/ex03/ClapTrap.hpp | 45 +++++++++++++ CPP03/ex03/DiamondTrap.cpp | 42 ++++++++++++ CPP03/ex03/DiamondTrap.hpp | 24 +++++++ CPP03/ex03/FragTrap.cpp | 43 +++++++++++++ CPP03/ex03/FragTrap.hpp | 23 +++++++ CPP03/ex03/Makefile | 20 ++++++ CPP03/ex03/ScavTrap.cpp | 43 +++++++++++++ CPP03/ex03/ScavTrap.hpp | 24 +++++++ CPP03/ex03/main.cpp | 30 +++++++++ CPP04/ex00/Animal.cpp | 4 +- CPP04/ex00/WrongAnimal.cpp | 4 +- CPP04/ex00/main.cpp | 6 +- CPP04/ex01/Brain.cpp | 8 ++- CPP04/ex02/Brain.cpp | 8 ++- CPP04/ex02/Brain.hpp | 4 +- CPP05/ex03/Bureaucrat.o | Bin 28824 -> 0 bytes CPP05/ex03/Form.o | Bin 25368 -> 0 bytes CPP05/ex03/Intern.o | Bin 22312 -> 0 bytes CPP05/ex03/PresidentialPardonForm.o | Bin 18212 -> 0 bytes CPP05/ex03/RobotomyRequestForm.o | Bin 18700 -> 0 bytes CPP05/ex03/ShrubberyCreationForm.o | Bin 56676 -> 0 bytes CPP05/ex03/bureau | Bin 96568 -> 0 bytes CPP05/ex03/main.o | Bin 5924 -> 0 bytes CPP06/ex00/Converter.cpp | 17 +++-- CPP06/ex00/Converter.hpp | 6 +- CPP06/ex00/main.cpp | 2 +- CPP07/ex00/Makefile | 20 ++++++ CPP07/ex00/main.cpp | 32 ++++++++++ CPP07/ex00/main.hpp | 29 +++++++++ CPP07/ex01/Makefile | 21 ++++++ CPP07/ex01/iter.hpp | 19 ++++++ CPP07/ex01/main.cpp | 33 ++++++++++ CPP07/ex02/Array.hpp | 61 ++++++++++++++++++ CPP07/ex02/Makefile | 20 ++++++ CPP07/ex02/main.cpp | 32 ++++++++++ CPP08/ex00/Makefile | 21 ++++++ 53 files changed, 769 insertions(+), 102 deletions(-) delete mode 100755 CPP03/ex01/claptrap delete mode 100755 CPP03/ex02/claptrap create mode 100644 CPP03/ex03/ClapTrap.cpp create mode 100644 CPP03/ex03/ClapTrap.hpp create mode 100644 CPP03/ex03/DiamondTrap.cpp create mode 100644 CPP03/ex03/DiamondTrap.hpp create mode 100644 CPP03/ex03/FragTrap.cpp create mode 100644 CPP03/ex03/FragTrap.hpp create mode 100644 CPP03/ex03/Makefile create mode 100644 CPP03/ex03/ScavTrap.cpp create mode 100644 CPP03/ex03/ScavTrap.hpp create mode 100644 CPP03/ex03/main.cpp delete mode 100644 CPP05/ex03/Bureaucrat.o delete mode 100644 CPP05/ex03/Form.o delete mode 100644 CPP05/ex03/Intern.o delete mode 100644 CPP05/ex03/PresidentialPardonForm.o delete mode 100644 CPP05/ex03/RobotomyRequestForm.o delete mode 100644 CPP05/ex03/ShrubberyCreationForm.o delete mode 100755 CPP05/ex03/bureau delete mode 100644 CPP05/ex03/main.o create mode 100644 CPP07/ex00/Makefile create mode 100644 CPP07/ex00/main.cpp create mode 100644 CPP07/ex00/main.hpp create mode 100644 CPP07/ex01/Makefile create mode 100644 CPP07/ex01/iter.hpp create mode 100644 CPP07/ex01/main.cpp create mode 100644 CPP07/ex02/Array.hpp create mode 100644 CPP07/ex02/Makefile create mode 100644 CPP07/ex02/main.cpp create mode 100644 CPP08/ex00/Makefile diff --git a/CPP02/ex01/Fixed.cpp b/CPP02/ex01/Fixed.cpp index 6658e4c..70e1cc1 100644 --- a/CPP02/ex01/Fixed.cpp +++ b/CPP02/ex01/Fixed.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/20 10:07:44 by narnaud #+# #+# */ -/* Updated: 2022/06/20 14:15:11 by narnaud ### ########.fr */ +/* Updated: 2022/07/18 14:00:06 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,43 +22,37 @@ Fixed::Fixed (void) { Fixed::Fixed (const int init_int) { - std::cout << "Fixed constructor from interger called " << std::endl; + std::cout << "Integer constructor called " << std::endl; _raw_bits = init_int * (1 << _fract_bits); } Fixed::Fixed (const float init_float) { - std::cout << "Fixed constructor from float called " << std::endl; + std::cout << "Float constructor called " << std::endl; _raw_bits = std::roundf(init_float * (1 << _fract_bits)); } Fixed::Fixed (Fixed const & src) { - std::cout << "Fixed copy constructor called" << std::endl; - _raw_bits = src.getRawBits(); + std::cout << "Copy constructor called" << std::endl; + *this = src; } Fixed & Fixed::operator= (Fixed const & src) { - - std::cout << "Fixed assignment operator called" << std::endl; + std::cout << "Copy assignment operator called" << std::endl; _raw_bits = src.getRawBits(); return (*this); } Fixed::~Fixed (void) { - std::cout << "Fixed default destructor called" << std::endl; } -int Fixed::getRawBits(void) const -{ - std::cout << "getRawBits member function called" << std::endl; +int Fixed::getRawBits(void) const { return (_raw_bits); } -void Fixed::setRawBits(int const raw) -{ - std::cout << "setRawBits member function called" << std::endl; +void Fixed::setRawBits(int const raw) { _raw_bits = raw; } diff --git a/CPP02/ex01/main.cpp b/CPP02/ex01/main.cpp index 944f370..67c29d7 100644 --- a/CPP02/ex01/main.cpp +++ b/CPP02/ex01/main.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/20 10:07:23 by narnaud #+# #+# */ -/* Updated: 2022/06/20 13:35:26 by narnaud ### ########.fr */ +/* Updated: 2022/07/18 13:51:53 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,14 +19,14 @@ int main(void) Fixed const b( 10 ); Fixed const c( 42.42f ); Fixed const d( b ); - Fixed e; - e = d; + //Fixed e; + //e = d; a = Fixed( 1234.4321f ); - std::cout << a.getRawBits() << std::endl; - std::cout << b.getRawBits() << std::endl; - std::cout << c.getRawBits() << std::endl; + //std::cout << a.getRawBits() << std::endl; + //std::cout << b.getRawBits() << std::endl; + //std::cout << c.getRawBits() << std::endl; std::cout << "a is " << a << std::endl; std::cout << "b is " << b << std::endl; diff --git a/CPP03/ex00/ClapTrap.cpp b/CPP03/ex00/ClapTrap.cpp index e07c0c5..34c19c2 100644 --- a/CPP03/ex00/ClapTrap.cpp +++ b/CPP03/ex00/ClapTrap.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 10:53:50 by narnaud #+# #+# */ -/* Updated: 2022/06/23 17:47:34 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:12:17 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,17 +16,14 @@ int ClapTrap::amount = 0; ClapTrap *ClapTrap::registery[128] = {NULL}; -ClapTrap::ClapTrap (void) { +ClapTrap::ClapTrap (void) {} - std::cout << "ClapTrap default constructor called " << endl; -} - -ClapTrap::ClapTrap (std::string name, size_t hp, size_t ep, size_t atk) - : _name(name), _health(hp), _energy(ep), _attack(atk) { +ClapTrap::ClapTrap (std::string name) + : _name(name), _health(10), _energy(10), _attack(0) { if (ClapTrap::amount >= 128) { - delete ClapTrap::registery[amount % 128]; cout << "There are too many Traps " << ClapTrap::registery[amount % 128]->getName() << " destroyed\n"; + delete ClapTrap::registery[amount % 128]; } cout << "ClapTrap " << name << " was created" << endl; _id = ClapTrap::amount % 128; @@ -39,15 +36,11 @@ ClapTrap::ClapTrap (ClapTrap const & src) { } ClapTrap & ClapTrap::operator= (ClapTrap const & src) { - std::cout << "ClapTrap assignment operator called" << endl; _name = src.getName(); return (*this); } -ClapTrap::~ClapTrap (void) { - - std::cout << "ClapTrap " << _name << " was destroyed" << endl; -} +ClapTrap::~ClapTrap (void) {} void ClapTrap::attack(const std::string& target) { if (_energy == 0 || _health == 0) @@ -87,10 +80,12 @@ std::string ClapTrap::getName(void) const { } ClapTrap *ClapTrap::getClapTrap(std::string name) { - for (int i = 0; i < 128; i++) + int i = 0; + while (i < ClapTrap::amount && i < 128) { if (name == ClapTrap::registery[i]->getName()) return (ClapTrap::registery[i]); + i++; } return (NULL); } diff --git a/CPP03/ex00/ClapTrap.hpp b/CPP03/ex00/ClapTrap.hpp index 4ce8a2e..ea62e02 100644 --- a/CPP03/ex00/ClapTrap.hpp +++ b/CPP03/ex00/ClapTrap.hpp @@ -6,14 +6,11 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 10:54:07 by narnaud #+# #+# */ -/* Updated: 2022/06/24 07:50:53 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:09:51 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #pragma once -#define CT_HEALTH 10 -#define CT_ENERGY 10 -#define CT_DMG 0 #include #include @@ -26,8 +23,7 @@ class ClapTrap { static ClapTrap *registery[128]; static int amount; ClapTrap (void); - ClapTrap (std::string name, size_t hp = CT_HEALTH,\ - size_t ep = CT_ENERGY, size_t atk = CT_DMG); + ClapTrap (std::string name); ClapTrap (ClapTrap const & src); virtual ~ClapTrap (void); ClapTrap & operator= (ClapTrap const & src); diff --git a/CPP03/ex01/ClapTrap.cpp b/CPP03/ex01/ClapTrap.cpp index e07c0c5..b808dd4 100644 --- a/CPP03/ex01/ClapTrap.cpp +++ b/CPP03/ex01/ClapTrap.cpp @@ -21,8 +21,8 @@ ClapTrap::ClapTrap (void) { std::cout << "ClapTrap default constructor called " << endl; } -ClapTrap::ClapTrap (std::string name, size_t hp, size_t ep, size_t atk) - : _name(name), _health(hp), _energy(ep), _attack(atk) { +ClapTrap::ClapTrap (std::string name) + : _name(name), _health(10), _energy(10), _attack(0) { if (ClapTrap::amount >= 128) { delete ClapTrap::registery[amount % 128]; diff --git a/CPP03/ex01/ClapTrap.hpp b/CPP03/ex01/ClapTrap.hpp index 384b1ab..f8d803e 100644 --- a/CPP03/ex01/ClapTrap.hpp +++ b/CPP03/ex01/ClapTrap.hpp @@ -11,9 +11,6 @@ /* ************************************************************************** */ #pragma once -#define CT_HEALTH 10 -#define CT_ENERGY 10 -#define CT_DMG 0 #include #include @@ -26,8 +23,7 @@ class ClapTrap { static ClapTrap *registery[128]; static int amount; ClapTrap (void); - ClapTrap (std::string name, size_t hp = CT_HEALTH,\ - size_t ep = CT_ENERGY, size_t atk = CT_DMG); + ClapTrap (std::string name); ClapTrap (ClapTrap const & src); virtual ~ClapTrap (void); ClapTrap & operator= (ClapTrap const & src); diff --git a/CPP03/ex01/ScavTrap.cpp b/CPP03/ex01/ScavTrap.cpp index bb54637..14dbd82 100644 --- a/CPP03/ex01/ScavTrap.cpp +++ b/CPP03/ex01/ScavTrap.cpp @@ -6,13 +6,16 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 15:19:54 by narnaud #+# #+# */ -/* Updated: 2022/06/24 07:49:17 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:17:44 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "ScavTrap.hpp" -ScavTrap::ScavTrap (std::string name, size_t hp, size_t ep, size_t atk):ClapTrap(name, hp, ep, atk){ +ScavTrap::ScavTrap (std::string name):ClapTrap(name){ + _health = 100; + _energy= 50; + _attack = 20; cout << "ClapTrap " << name << " evolved to ScavTrap" << endl; } diff --git a/CPP03/ex01/ScavTrap.hpp b/CPP03/ex01/ScavTrap.hpp index 66e1e9b..de29253 100644 --- a/CPP03/ex01/ScavTrap.hpp +++ b/CPP03/ex01/ScavTrap.hpp @@ -6,22 +6,18 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 15:17:41 by narnaud #+# #+# */ -/* Updated: 2022/06/23 17:03:22 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:16:21 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #pragma once #include "ClapTrap.hpp" -#define ST_HEALTH 100 -#define ST_ENERGY 50 -#define ST_DMG 20 class ScavTrap : public ClapTrap { public: - ScavTrap (std::string name, size_t hp = ST_HEALTH,\ - size_t ep = ST_ENERGY, size_t atk = ST_DMG); + ScavTrap (std::string name); ~ScavTrap (void); void attack(const std::string& target); void guardGate(void); diff --git a/CPP03/ex01/claptrap b/CPP03/ex01/claptrap deleted file mode 100755 index 4857b0e3f7310ddf0af63abf6fb83e067e2d8d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33588 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 diff --git a/CPP03/ex02/ClapTrap.cpp b/CPP03/ex02/ClapTrap.cpp index e07c0c5..8056078 100644 --- a/CPP03/ex02/ClapTrap.cpp +++ b/CPP03/ex02/ClapTrap.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 10:53:50 by narnaud #+# #+# */ -/* Updated: 2022/06/23 17:47:34 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:20:18 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,8 @@ ClapTrap::ClapTrap (void) { std::cout << "ClapTrap default constructor called " << endl; } -ClapTrap::ClapTrap (std::string name, size_t hp, size_t ep, size_t atk) - : _name(name), _health(hp), _energy(ep), _attack(atk) { +ClapTrap::ClapTrap (std::string name) + : _name(name), _health(10), _energy(10), _attack(0) { if (ClapTrap::amount >= 128) { delete ClapTrap::registery[amount % 128]; diff --git a/CPP03/ex02/ClapTrap.hpp b/CPP03/ex02/ClapTrap.hpp index a4271bc..2664539 100644 --- a/CPP03/ex02/ClapTrap.hpp +++ b/CPP03/ex02/ClapTrap.hpp @@ -6,14 +6,11 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 10:54:07 by narnaud #+# #+# */ -/* Updated: 2022/06/24 07:51:21 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:19:51 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #pragma once -#define CT_HEALTH 10 -#define CT_ENERGY 10 -#define CT_DMG 0 #include #include @@ -26,8 +23,7 @@ class ClapTrap { static ClapTrap *registery[128]; static int amount; ClapTrap (void); - ClapTrap (std::string name, size_t hp = CT_HEALTH,\ - size_t ep = CT_ENERGY, size_t atk = CT_DMG); + ClapTrap (std::string name); ClapTrap (ClapTrap const & src); virtual ~ClapTrap (void); ClapTrap & operator= (ClapTrap const & src); diff --git a/CPP03/ex02/FragTrap.cpp b/CPP03/ex02/FragTrap.cpp index ceb544e..27b0202 100644 --- a/CPP03/ex02/FragTrap.cpp +++ b/CPP03/ex02/FragTrap.cpp @@ -6,13 +6,16 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 15:19:54 by narnaud #+# #+# */ -/* Updated: 2022/06/24 07:46:44 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:23:22 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "FragTrap.hpp" -FragTrap::FragTrap (std::string name, size_t hp, size_t ep, size_t atk):ClapTrap(name, hp, ep, atk){ +FragTrap::FragTrap (std::string name):ClapTrap(name){ + _health = 100; + _energy = 100; + _attack = 30; cout << "ClapTrap " << name << " evolved to FragTrap" << endl; } diff --git a/CPP03/ex02/FragTrap.hpp b/CPP03/ex02/FragTrap.hpp index 904cf21..8f81c1c 100644 --- a/CPP03/ex02/FragTrap.hpp +++ b/CPP03/ex02/FragTrap.hpp @@ -6,22 +6,18 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 15:17:41 by narnaud #+# #+# */ -/* Updated: 2022/06/24 07:33:33 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:23:55 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #pragma once #include "ClapTrap.hpp" -#define FT_HEALTH 100 -#define FT_ENERGY 100 -#define FT_DMG 30 class FragTrap : public ClapTrap { public: - FragTrap (std::string name, size_t hp = FT_HEALTH,\ - size_t ep = FT_ENERGY, size_t atk = FT_DMG); + FragTrap (std::string name); ~FragTrap (void); void attack(const std::string& target); void highFivesGuys(void); diff --git a/CPP03/ex02/ScavTrap.cpp b/CPP03/ex02/ScavTrap.cpp index 71a46c5..df0e28a 100644 --- a/CPP03/ex02/ScavTrap.cpp +++ b/CPP03/ex02/ScavTrap.cpp @@ -6,13 +6,16 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 15:19:54 by narnaud #+# #+# */ -/* Updated: 2022/06/24 07:47:54 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:22:09 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #include "ScavTrap.hpp" -ScavTrap::ScavTrap (std::string name, size_t hp, size_t ep, size_t atk):ClapTrap(name, hp, ep, atk){ +ScavTrap::ScavTrap (std::string name):ClapTrap(name){ + _health = 100; + _energy = 50; + _attack = 20; cout << "ClapTrap " << name << " evolved to ScavTrap" << endl; } diff --git a/CPP03/ex02/ScavTrap.hpp b/CPP03/ex02/ScavTrap.hpp index 66e1e9b..ec8310d 100644 --- a/CPP03/ex02/ScavTrap.hpp +++ b/CPP03/ex02/ScavTrap.hpp @@ -6,22 +6,18 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/23 15:17:41 by narnaud #+# #+# */ -/* Updated: 2022/06/23 17:03:22 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 02:24:27 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ #pragma once #include "ClapTrap.hpp" -#define ST_HEALTH 100 -#define ST_ENERGY 50 -#define ST_DMG 20 class ScavTrap : public ClapTrap { public: - ScavTrap (std::string name, size_t hp = ST_HEALTH,\ - size_t ep = ST_ENERGY, size_t atk = ST_DMG); + ScavTrap (std::string name); ~ScavTrap (void); void attack(const std::string& target); void guardGate(void); diff --git a/CPP03/ex02/claptrap b/CPP03/ex02/claptrap deleted file mode 100755 index 4857b0e3f7310ddf0af63abf6fb83e067e2d8d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33588 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 diff --git a/CPP03/ex03/ClapTrap.cpp b/CPP03/ex03/ClapTrap.cpp new file mode 100644 index 0000000..71d4ee5 --- /dev/null +++ b/CPP03/ex03/ClapTrap.cpp @@ -0,0 +1,96 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 10:53:50 by narnaud #+# #+# */ +/* Updated: 2022/07/19 02:26:32 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +int ClapTrap::amount = 0; +ClapTrap *ClapTrap::registery[128] = {NULL}; + + +ClapTrap::ClapTrap (void) { + + std::cout << "ClapTrap default constructor called " << endl; +} + +ClapTrap::ClapTrap (std::string name) + : _name(name), _health(10), _energy(10), _attack(0) { + if (ClapTrap::amount >= 128) + { + delete ClapTrap::registery[amount % 128]; + cout << "There are too many Traps " << ClapTrap::registery[amount % 128]->getName() << " destroyed\n"; + } + cout << "ClapTrap " << name << " was created" << endl; + _id = ClapTrap::amount % 128; + ClapTrap::registery[ClapTrap::amount % 128] = this; + ClapTrap::amount++; +} + +ClapTrap::ClapTrap (ClapTrap const & src) { + _name = src.getName(); +} + +ClapTrap & ClapTrap::operator= (ClapTrap const & src) { + std::cout << "ClapTrap assignment operator called" << endl; + _name = src.getName(); + return (*this); +} + +ClapTrap::~ClapTrap (void) { + + std::cout << "ClapTrap " << _name << " was destroyed" << endl; +} + +void ClapTrap::attack(const std::string& target) { + if (_energy == 0 || _health == 0) + cout << _name << " is no more able to attack anyone" << endl; + else + { + cout << _name << " attacked " << target << endl; + getClapTrap(target)->takeDamage(_attack); + _energy--; + } +} + +void ClapTrap::takeDamage(unsigned int amount) { + if (_health == 0) + cout << _name << " is already death" << endl; + else + cout << _name << " lose " << amount << " hp" << endl; + if (amount >= _health) + _health = 0; + else + _health -= amount; +} + +void ClapTrap::beRepaired(unsigned int amount) { + if (_energy == 0 || _health == 0) + cout << _name << " is no more able to repair anyone" << endl; + else + { + cout << _name << " was repaired for " << amount << " hp" << endl; + _health += amount; + _energy--; + } +} + +std::string ClapTrap::getName(void) const { + return (_name); +} + +ClapTrap *ClapTrap::getClapTrap(std::string name) { + for (int i = 0; i < 128; i++) + { + if (name == ClapTrap::registery[i]->getName()) + return (ClapTrap::registery[i]); + } + return (NULL); +} diff --git a/CPP03/ex03/ClapTrap.hpp b/CPP03/ex03/ClapTrap.hpp new file mode 100644 index 0000000..7f1c8af --- /dev/null +++ b/CPP03/ex03/ClapTrap.hpp @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 10:54:07 by narnaud #+# #+# */ +/* Updated: 2022/07/19 02:49:28 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include +#include +using std::cout; +using std::endl; + +class ClapTrap { + + public: + static ClapTrap *registery[128]; + static int amount; + + ClapTrap (void); + ClapTrap (std::string name); + ClapTrap (ClapTrap const & src); + virtual ~ClapTrap (void); + + ClapTrap & operator= (ClapTrap const & src); + + virtual void attack(const std::string& target); + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + std::string getName(void) const; + static ClapTrap *getClapTrap(std::string name); + + protected: + std::string _name; + unsigned int _health; + unsigned int _energy; + unsigned int _attack; + unsigned int _id; +}; diff --git a/CPP03/ex03/DiamondTrap.cpp b/CPP03/ex03/DiamondTrap.cpp new file mode 100644 index 0000000..d120025 --- /dev/null +++ b/CPP03/ex03/DiamondTrap.cpp @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* DiamondTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 15:19:54 by narnaud #+# #+# */ +/* Updated: 2022/08/03 10:30:43 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "DiamondTrap.hpp" + +DiamondTrap::DiamondTrap (std::string name): ScavTrap(name), FragTrap(name){ + cout << ScavTrap::_energy << endl; + ClapTrap::_name = name + "_clap_name"; + _name = name; + _health = FragTrap::_health; + _energy = ScavTrap::_energy; + _attack = FragTrap::_attack; + cout << name << "is now a DiamondTrap" << endl; +} + +DiamondTrap::~DiamondTrap (void) { + cout << "DiamondTrap " << _name << " was destroyed" << endl; +} + +void DiamondTrap::attack(const std::string& target) { + if (_energy == 0 || _health == 0) + cout << _name << " is no more able to attack" << endl; + else + { + cout << _name << " heavily attacked " << target << endl; + getClapTrap(target)->takeDamage(_attack); + _energy--; + } +} + +void DiamondTrap::whoAmI(void) { + cout << "Name: " << _name << " - Clap name: " << ClapTrap::_name << endl; +} diff --git a/CPP03/ex03/DiamondTrap.hpp b/CPP03/ex03/DiamondTrap.hpp new file mode 100644 index 0000000..b3886ac --- /dev/null +++ b/CPP03/ex03/DiamondTrap.hpp @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* DiamondTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 15:17:41 by narnaud #+# #+# */ +/* Updated: 2022/07/19 02:52:31 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once +#include "ScavTrap.hpp" +#include "FragTrap.hpp" + +class DiamondTrap : public ScavTrap, public FragTrap { + std::string _name; + public: + DiamondTrap (std::string name); + ~DiamondTrap (void); + void attack(const std::string& target); + void whoAmI(void); +}; diff --git a/CPP03/ex03/FragTrap.cpp b/CPP03/ex03/FragTrap.cpp new file mode 100644 index 0000000..1bfa0b1 --- /dev/null +++ b/CPP03/ex03/FragTrap.cpp @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 15:19:54 by narnaud #+# #+# */ +/* Updated: 2022/07/19 02:29:38 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "FragTrap.hpp" + +FragTrap::FragTrap (std::string name):ClapTrap(name){ + _health = 100; + _energy = 100; + _attack = 30; + cout << "ClapTrap " << name << " evolved to FragTrap" << endl; +} + +FragTrap::~FragTrap (void) { + cout << "FragTrap " << _name << " was destroyed" << endl; +} + +void FragTrap::attack(const std::string& target) { + if (_energy == 0 || _health == 0) + cout << _name << " is no more able to attack anyone"; + else + { + cout << _name << " hardly attacked " << target << endl; + getClapTrap(target)->takeDamage(_attack); + _energy--; + } +} + +void FragTrap::highFivesGuys(void) { + for (int i = 0; i < 128; i++) + { + if (ClapTrap::registery[i]) + cout << _name << " high five " << ClapTrap::registery[i]->getName() << endl; + } +} diff --git a/CPP03/ex03/FragTrap.hpp b/CPP03/ex03/FragTrap.hpp new file mode 100644 index 0000000..a163147 --- /dev/null +++ b/CPP03/ex03/FragTrap.hpp @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 15:17:41 by narnaud #+# #+# */ +/* Updated: 2022/07/19 02:49:59 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once +#include "ClapTrap.hpp" + +class FragTrap : virtual public ClapTrap { + + public: + FragTrap (std::string name); + ~FragTrap (void); + void attack(const std::string& target); + void highFivesGuys(void); +}; diff --git a/CPP03/ex03/Makefile b/CPP03/ex03/Makefile new file mode 100644 index 0000000..f4ff839 --- /dev/null +++ b/CPP03/ex03/Makefile @@ -0,0 +1,20 @@ +NAME = diamondtrap +SRCS = main.cpp ClapTrap.cpp ScavTrap.cpp FragTrap.cpp DiamondTrap.cpp +OBJS = $(SRCS:.cpp=.o) + +CXXFLAGS = -std=c++98 -Werror -Wextra -Wall + +$(NAME): $(OBJS) + c++ $(OBJS) -o $(NAME) + +all : $(NAME) + +clean : + rm -rf $(OBJS) + +fclean : clean + rm -rf $(NAME) + +re : fclean all + +.PHONY: all clean fclean re diff --git a/CPP03/ex03/ScavTrap.cpp b/CPP03/ex03/ScavTrap.cpp new file mode 100644 index 0000000..44fb426 --- /dev/null +++ b/CPP03/ex03/ScavTrap.cpp @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 15:19:54 by narnaud #+# #+# */ +/* Updated: 2022/07/19 02:27:49 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" + +ScavTrap::ScavTrap (std::string name) +:ClapTrap(name){ + _health = 100; + _energy = 50; + _attack = 20; + cout << "ClapTrap " << name << " evolved to ScavTrap" << endl; +} + +ScavTrap::~ScavTrap (void) { + cout << "ScavTrap " << _name << " was destroyed" << endl; +} + +void ScavTrap::attack(const std::string& target) { + if (_energy == 0 || _health == 0) + cout << _name << " is no more able to attack" << endl; + else + { + cout << _name << " heavily attacked " << target << endl; + getClapTrap(target)->takeDamage(_attack); + _energy--; + } +} + +void ScavTrap::guardGate(void) { + if (_health == 0) + cout << _name << " is no more able to guard" << endl; + else + cout << _name << " is now in guard gate mode.\n"; +} diff --git a/CPP03/ex03/ScavTrap.hpp b/CPP03/ex03/ScavTrap.hpp new file mode 100644 index 0000000..a4758d4 --- /dev/null +++ b/CPP03/ex03/ScavTrap.hpp @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 15:17:41 by narnaud #+# #+# */ +/* Updated: 2022/07/19 02:27:07 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once +#include "ClapTrap.hpp" + +class ScavTrap : virtual public ClapTrap { + + public: + + ScavTrap (std::string name); + ~ScavTrap (void); + void attack(const std::string& target); + void guardGate(void); +}; diff --git a/CPP03/ex03/main.cpp b/CPP03/ex03/main.cpp new file mode 100644 index 0000000..7c827eb --- /dev/null +++ b/CPP03/ex03/main.cpp @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/06/23 10:53:16 by narnaud #+# #+# */ +/* Updated: 2022/07/19 02:47:30 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" +#include "FragTrap.hpp" +#include "DiamondTrap.hpp" + +int main(void) +{ + ClapTrap a("A"); + ScavTrap b("B"); + FragTrap c("C"); + DiamondTrap d("D"); + + a.attack("B"); + b.attack("C"); + c.attack("B"); + c.highFivesGuys(); + d.attack("C"); + d.whoAmI(); +} diff --git a/CPP04/ex00/Animal.cpp b/CPP04/ex00/Animal.cpp index 71a3e72..d17f56c 100644 --- a/CPP04/ex00/Animal.cpp +++ b/CPP04/ex00/Animal.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/24 09:02:11 by narnaud #+# #+# */ -/* Updated: 2022/06/24 11:22:10 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 12:42:41 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,5 +39,5 @@ string Animal::getType(void) const { return (_type); } void Animal::makeSound(void) const { - cout << "..." << endl; + cout << "Strange noise" << endl; } diff --git a/CPP04/ex00/WrongAnimal.cpp b/CPP04/ex00/WrongAnimal.cpp index 2c07637..b5ae921 100644 --- a/CPP04/ex00/WrongAnimal.cpp +++ b/CPP04/ex00/WrongAnimal.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/24 09:02:11 by narnaud #+# #+# */ -/* Updated: 2022/06/24 11:22:03 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 12:43:12 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,5 +38,5 @@ string WrongAnimal::getType(void) const { return (_type); } void WrongAnimal::makeSound(void) const { - cout << "..." << endl; + cout << "Strange noise" << endl; } diff --git a/CPP04/ex00/main.cpp b/CPP04/ex00/main.cpp index 9882379..48ba373 100644 --- a/CPP04/ex00/main.cpp +++ b/CPP04/ex00/main.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/24 08:28:40 by narnaud #+# #+# */ -/* Updated: 2022/06/24 10:16:31 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 12:40:35 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,5 +28,9 @@ int main(void) meta->makeSound(); k->makeSound(); + delete meta; + delete i; + delete j; + delete k; return (0); } diff --git a/CPP04/ex01/Brain.cpp b/CPP04/ex01/Brain.cpp index 2d69c0b..5c84ea5 100644 --- a/CPP04/ex01/Brain.cpp +++ b/CPP04/ex01/Brain.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/24 11:24:53 by narnaud #+# #+# */ -/* Updated: 2022/06/24 11:57:44 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 14:16:32 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,13 +17,15 @@ Brain::Brain (void) { } Brain::Brain (Brain const & src) { - (void)src; + for (int i = 0; i < 100; i++) + _idea[i] = src._idea[i]; cout << "Brain copy constructor called" << endl; } Brain & Brain::operator= (Brain const & src) { - (void)src; cout << "Brain assignment operator called" << endl; + for (int i = 0; i < 100; i++) + _idea[i] = src._idea[i]; return (*this); } diff --git a/CPP04/ex02/Brain.cpp b/CPP04/ex02/Brain.cpp index 2d69c0b..60e66b6 100644 --- a/CPP04/ex02/Brain.cpp +++ b/CPP04/ex02/Brain.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/24 11:24:53 by narnaud #+# #+# */ -/* Updated: 2022/06/24 11:57:44 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 14:22:38 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,12 +17,14 @@ Brain::Brain (void) { } Brain::Brain (Brain const & src) { - (void)src; + for (int i = 0; i < 100; i++) + _ideas[i] = src._ideas[i]; cout << "Brain copy constructor called" << endl; } Brain & Brain::operator= (Brain const & src) { - (void)src; + for (int i = 0; i < 100; i++) + _ideas[i] = src._ideas[i]; cout << "Brain assignment operator called" << endl; return (*this); } diff --git a/CPP04/ex02/Brain.hpp b/CPP04/ex02/Brain.hpp index 4598a81..9108054 100644 --- a/CPP04/ex02/Brain.hpp +++ b/CPP04/ex02/Brain.hpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/24 11:24:53 by narnaud #+# #+# */ -/* Updated: 2022/06/24 11:56:58 by narnaud ### ########.fr */ +/* Updated: 2022/07/19 14:23:14 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ using std::endl; using std::string; class Brain{ - string ideas[100]; + string _ideas[100]; public: Brain(void); Brain(Brain const & src); diff --git a/CPP05/ex03/Bureaucrat.o b/CPP05/ex03/Bureaucrat.o deleted file mode 100644 index 7af87271283d9babf40c02e03cb0e2b044bc7ef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28824 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 diff --git a/CPP05/ex03/Form.o b/CPP05/ex03/Form.o deleted file mode 100644 index dafe23b25fccfc03325e7b8a67f90ab49a46fd72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25368 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 D+*0LS diff --git a/CPP05/ex03/PresidentialPardonForm.o b/CPP05/ex03/PresidentialPardonForm.o deleted file mode 100644 index c5bdb925c85967aade9913be1db34a01d763c19a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18212 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 Rfk-%czqzNXh_Oo3{ts5jFgpMM diff --git a/CPP05/ex03/ShrubberyCreationForm.o b/CPP05/ex03/ShrubberyCreationForm.o deleted file mode 100644 index eb0e4b7729b2f06d3ad18311ffd4a82073380f62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56676 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/30 08:45:12 by narnaud #+# #+# */ -/* Updated: 2022/07/12 08:42:27 by narnaud ### ########.fr */ +/* Updated: 2022/08/18 08:54:04 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,17 +30,22 @@ Converter::Converter (string str){ _c = static_cast(_d); if (_d < 0 || _d > 255) cout << "Invalid" << endl; - else if (std::isprint(_c)) + else if (isnan(_d)) + cout << "Impossible" << endl; + else if (!std::isprint(_c)) cout << "Not Printable" << endl; else - cout << _c << endl; + cout << "'" << _c << "'" << endl; } - cout << "Double: " << _d << endl; cout << "Integer: "; - _i = static_cast(_d); + _i = static_cast(_d); if (_d < std::numeric_limits::min() || _d > std::numeric_limits::max()) cout << "Off limits -> "; - cout << _i << endl; + if (isnan(_d)) + cout << "Impossible" << endl; + else + cout << _i << endl; + cout << "Double: " << _d << endl; _f = static_cast(_d); cout << "Float: " << _f << "f"<< endl; } diff --git a/CPP06/ex00/Converter.hpp b/CPP06/ex00/Converter.hpp index b13ad66..98829ff 100644 --- a/CPP06/ex00/Converter.hpp +++ b/CPP06/ex00/Converter.hpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/30 08:45:12 by narnaud #+# #+# */ -/* Updated: 2022/07/12 08:46:08 by narnaud ### ########.fr */ +/* Updated: 2022/08/18 08:45:46 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,8 @@ #include #include #include +#include + using std::cout; using std::endl; using std::string; @@ -29,7 +31,7 @@ class Converter{ int _i; float _f; double _d; - int _types[4]; + //int _types[4]; public: Converter(void); Converter(string str); diff --git a/CPP06/ex00/main.cpp b/CPP06/ex00/main.cpp index 91b5a6f..5a5296d 100644 --- a/CPP06/ex00/main.cpp +++ b/CPP06/ex00/main.cpp @@ -6,7 +6,7 @@ /* By: narnaud +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/06/28 08:44:43 by narnaud #+# #+# */ -/* Updated: 2022/07/12 08:09:02 by narnaud ### ########.fr */ +/* Updated: 2022/07/21 12:16:42 by narnaud ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/CPP07/ex00/Makefile b/CPP07/ex00/Makefile new file mode 100644 index 0000000..be24ac4 --- /dev/null +++ b/CPP07/ex00/Makefile @@ -0,0 +1,20 @@ +NAME = templates +SRCS = main.cpp +OBJS = $(SRCS:.cpp=.o) + +CXXFLAGS = -std=c++98 -Werror -Wextra -Wall + +$(NAME) : $(OBJS) + c++ $(OBJS) -o $(NAME) + +all : $(NAME) + +clean : + rm -rf $(OBJS) + +fclean : clean + rm -rf $(NAME) + +re : fclean all + +.PHONY : all clean fclean re diff --git a/CPP07/ex00/main.cpp b/CPP07/ex00/main.cpp new file mode 100644 index 0000000..31790cb --- /dev/null +++ b/CPP07/ex00/main.cpp @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/05 08:05:29 by narnaud #+# #+# */ +/* Updated: 2022/09/05 08:13:45 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "main.hpp" +#include + +int main( void ) { + int a = 2; + int b = 3; + std::cout << "a = " << a << ", b = " << b << std::endl; + ::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/ex00/main.hpp b/CPP07/ex00/main.hpp new file mode 100644 index 0000000..659bb67 --- /dev/null +++ b/CPP07/ex00/main.hpp @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/05 08:05:52 by narnaud #+# #+# */ +/* Updated: 2022/09/05 08:13:08 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +template +void swap (T &t1, T &t2) { + T tmp; + tmp = t1; + t1 = t2; + t2 = tmp; +} + +template +T min (T &t1, T &t2) { + return (t1 < t2 ? t1 : t2); +} + +template +T max (T &t1, T &t2) { + return (t1 > t2 ? t1 : t2); +} diff --git a/CPP07/ex01/Makefile b/CPP07/ex01/Makefile new file mode 100644 index 0000000..cec2b40 --- /dev/null +++ b/CPP07/ex01/Makefile @@ -0,0 +1,21 @@ +NAME = iter +SRCS = main.cpp +OBJS = $(SRCS:.cpp=.o) + +CXXFLAGS = -std=c++98 -Werror -Wextra -Wall + +$(NAME) : $(OBJS) + c++ $(OBJS) -o $(NAME) + +all : $(NAME) + +clean : + rm -rf $(OBJS) + +fclean : clean + rm -rf $(NAME) + +re : fclean all + +.PHONY : all clean fclean re + diff --git a/CPP07/ex01/iter.hpp b/CPP07/ex01/iter.hpp new file mode 100644 index 0000000..43d1d4f --- /dev/null +++ b/CPP07/ex01/iter.hpp @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* iter.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/05 08:14:42 by narnaud #+# #+# */ +/* Updated: 2022/09/05 08:33:06 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + + +template +void iter(T *arr, int length, void (*fct)(T)) { + for (int i = 0; i < length; i++) { + fct(arr[i]); + } +} diff --git a/CPP07/ex01/main.cpp b/CPP07/ex01/main.cpp new file mode 100644 index 0000000..e4e1561 --- /dev/null +++ b/CPP07/ex01/main.cpp @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/05 08:14:45 by narnaud #+# #+# */ +/* Updated: 2022/09/05 08:43:03 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include "iter.hpp" + +template +void put_t(T t) { + std::cout << t << std::endl; +} + +template +void put_square(T t) { + put_t(t * t); +} + +int main(void) { + int nbrs[5] = {1, 2, 3 , 4, 5}; + char words[5][4] = {"the", "one", "two", "get", "any"}; + + iter(nbrs, 5, put_t); + iter(nbrs, 3, put_square); + iter(words, 5, put_t); +} diff --git a/CPP07/ex02/Array.hpp b/CPP07/ex02/Array.hpp new file mode 100644 index 0000000..188d4c6 --- /dev/null +++ b/CPP07/ex02/Array.hpp @@ -0,0 +1,61 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Array.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/05 08:50:55 by narnaud #+# #+# */ +/* Updated: 2022/09/05 11:23:19 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +template class Array { + T *tab; + int nbr; + public: + Array() { + tab = new T[0]; + }; + + Array(int n) { + tab = new T[nbr = n]; + }; + + Array(const Array &a) { + tab = new T[nbr = a.size()]; + for (int i = 0; i < nbr; i++) { + tab[i] = a[i]; + } + }; + + ~Array() { + delete [] tab; + }; + + Array &operator= (const Array &a) { + delete [] tab; + nbr = a.size(); + tab = new T[nbr]; + for (int i = 0; i < nbr; i++) { + tab[i] = a[i]; + } + return (*this); + }; + + T &operator[] (int i) { + if (i >= nbr) throw (std::runtime_error("error: Array index out of bound.")); + return (tab[i]); + }; + + T operator[] (int i) const { + if (i >= nbr) throw (std::runtime_error("error: Array index out of bound.")); + return (tab[i]); + }; + + int size() const{ + return (nbr); + }; +}; diff --git a/CPP07/ex02/Makefile b/CPP07/ex02/Makefile new file mode 100644 index 0000000..6c35345 --- /dev/null +++ b/CPP07/ex02/Makefile @@ -0,0 +1,20 @@ +NAME = array +SRCS = main.cpp +OBJS = $(SRCS:.cpp=.o) + +CXXFLAGS = -std=c++98 -Werror -Wextra -Wall + +$(NAME) : $(OBJS) + c++ $(OBJS) -o $(NAME) + +all : $(NAME) + +clean : + rm -rf $(OBJS) + +fclean : clean + rm -rf $(NAME) + +re : fclean all + +.PHONY : all clean fclean re diff --git a/CPP07/ex02/main.cpp b/CPP07/ex02/main.cpp new file mode 100644 index 0000000..1dbb026 --- /dev/null +++ b/CPP07/ex02/main.cpp @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: narnaud +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/05 08:49:45 by narnaud #+# #+# */ +/* Updated: 2022/09/05 11:00:32 by narnaud ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Array.hpp" + +int main(void) { + Array a; + Array b(10); + Array c(b); + + b[3] = 'b'; + std::cout << b[3] << std::endl; + std::cout << b.size() << std::endl; + std::cout << c[3] << std::endl; + c = b; + std::cout << c[3] << std::endl; + + try { + std::cout << b[12] << std::endl; + } catch (std::exception &e) { + std::cout << e.what() << std::endl; + } +} diff --git a/CPP08/ex00/Makefile b/CPP08/ex00/Makefile new file mode 100644 index 0000000..30d1ec0 --- /dev/null +++ b/CPP08/ex00/Makefile @@ -0,0 +1,21 @@ +NAME = easy_find +SRCS = +OBJS= $(SRCS:.cpp=.o) + +CXXFLAGS = -std=c++98 -Werror -Wextra -Wall + +$(NAME) : $(OBJS) + c++ $(OBJS) -o $(NAME) + +all : $(NAME) + +clean : + rm -rf $(OBJS) + +fclean : clean + rm -rf $(NAME) + +re : fclean all + +.PHONY : all clean fclean re +