From 93c619a3c7a3b4377868ab90701ec7f2d198e368 Mon Sep 17 00:00:00 2001 From: Ladebeze66 Date: Tue, 20 Feb 2024 15:35:19 +0100 Subject: [PATCH] ccp --- cpp00/ex00/Makefile | 61 ++++++++ cpp00/ex00/a.out | Bin 0 -> 16664 bytes cpp00/ex00/megaphone | Bin 0 -> 16664 bytes cpp00/ex00/megaphone.cpp | 35 +++++ cpp00/ex00/megaphone.o | Bin 0 -> 3320 bytes cpp00/ex01/.vscode/c_cpp_properties.json | 18 +++ cpp00/ex01/.vscode/launch.json | 24 +++ cpp00/ex01/.vscode/settings.json | 108 ++++++++++++++ cpp00/ex01/Contact.cpp | 97 ++++++++++++ cpp00/ex01/Contact.hpp | 38 +++++ cpp00/ex01/Contact.o | Bin 0 -> 22680 bytes cpp00/ex01/Makefile | 63 ++++++++ cpp00/ex01/PhoneBook.cpp | 69 +++++++++ cpp00/ex01/PhoneBook.hpp | 37 +++++ cpp00/ex01/PhoneBook.o | Bin 0 -> 8728 bytes cpp00/ex01/main.cpp | 44 ++++++ cpp00/ex01/main.o | Bin 0 -> 5456 bytes cpp00/ex01/phonebook | Bin 0 -> 31032 bytes cpp00/ex02/.vscode/c_cpp_properties.json | 18 +++ cpp00/ex02/.vscode/launch.json | 24 +++ cpp00/ex02/.vscode/settings.json | 59 ++++++++ cpp00/ex02/19920104_091532.log | 59 ++++++++ cpp00/ex02/Account.cpp | 119 +++++++++++++++ cpp00/ex02/Account.hpp | 69 +++++++++ cpp00/ex02/Account.o | Bin 0 -> 11416 bytes cpp00/ex02/Makefile | 50 +++++++ cpp00/ex02/bank | Bin 0 -> 40584 bytes cpp00/ex02/tests.cpp | 72 +++++++++ cpp00/ex02/tests.o | Bin 0 -> 60032 bytes cpp01/ex00/.vscode/c_cpp_properties.json | 18 +++ cpp01/ex00/.vscode/launch.json | 24 +++ cpp01/ex00/.vscode/settings.json | 59 ++++++++ cpp01/ex00/Makefile | 64 ++++++++ cpp01/ex00/Zombie.cpp | 37 +++++ cpp01/ex00/Zombie.hpp | 33 +++++ cpp01/ex00/Zombie.o | Bin 0 -> 5288 bytes cpp01/ex00/main.cpp | 26 ++++ cpp01/ex00/main.o | Bin 0 -> 12488 bytes cpp01/ex00/newZombie.cpp | 20 +++ cpp01/ex00/newZombie.o | Bin 0 -> 3760 bytes cpp01/ex00/randomChump.cpp | 20 +++ cpp01/ex00/randomChump.o | Bin 0 -> 3784 bytes cpp01/ex00/zombie | Bin 0 -> 24856 bytes cpp01/ex01/.vscode/c_cpp_properties.json | 18 +++ cpp01/ex01/.vscode/launch.json | 24 +++ cpp01/ex01/.vscode/settings.json | 105 +++++++++++++ cpp01/ex01/Makefile | 63 ++++++++ cpp01/ex01/Zombie.cpp | 39 +++++ cpp01/ex01/Zombie.hpp | 35 +++++ cpp01/ex01/Zombie.o | Bin 0 -> 5728 bytes cpp01/ex01/horde | Bin 0 -> 29056 bytes cpp01/ex01/main.cpp | 36 +++++ cpp01/ex01/main.o | Bin 0 -> 12824 bytes cpp01/ex01/zombieHorde.cpp | 23 +++ cpp01/ex01/zombieHorde.o | Bin 0 -> 4096 bytes cpp01/ex02/.vscode/c_cpp_properties.json | 18 +++ cpp01/ex02/.vscode/launch.json | 24 +++ cpp01/ex02/.vscode/settings.json | 59 ++++++++ cpp01/ex02/Makefile | 61 ++++++++ cpp01/ex02/brain | Bin 0 -> 23672 bytes cpp01/ex02/main.cpp | 31 ++++ cpp01/ex02/main.o | Bin 0 -> 12928 bytes cpp01/ex03/.vscode/c_cpp_properties.json | 18 +++ cpp01/ex03/.vscode/launch.json | 24 +++ cpp01/ex03/.vscode/settings.json | 59 ++++++++ cpp01/ex03/HumanA.cpp | 23 +++ cpp01/ex03/HumanA.hpp | 30 ++++ cpp01/ex03/HumanA.o | Bin 0 -> 4648 bytes cpp01/ex03/HumanB.cpp | 28 ++++ cpp01/ex03/HumanB.hpp | 31 ++++ cpp01/ex03/HumanB.o | Bin 0 -> 4752 bytes cpp01/ex03/Makefile | 64 ++++++++ cpp01/ex03/Weapon.cpp | 31 ++++ cpp01/ex03/Weapon.hpp | 31 ++++ cpp01/ex03/Weapon.o | Bin 0 -> 3960 bytes cpp01/ex03/main.cpp | 35 +++++ cpp01/ex03/main.o | Bin 0 -> 14024 bytes cpp01/ex03/weapon | Bin 0 -> 29464 bytes cpp01/ex04/.vscode/c_cpp_properties.json | 18 +++ cpp01/ex04/.vscode/launch.json | 24 +++ cpp01/ex04/.vscode/settings.json | 107 ++++++++++++++ cpp01/ex04/Makefile | 61 ++++++++ cpp01/ex04/main.cpp | 65 ++++++++ cpp01/ex04/main.o | Bin 0 -> 17152 bytes cpp01/ex04/replace | Bin 0 -> 29632 bytes cpp01/ex04/test | 4 + cpp01/ex04/test.replace | 4 + cpp01/ex04/test.txt.replace | 4 + cpp01/ex05/.vscode/c_cpp_properties.json | 18 +++ cpp01/ex05/.vscode/launch.json | 24 +++ cpp01/ex05/.vscode/settings.json | 59 ++++++++ cpp01/ex05/Harl.cpp | 52 +++++++ cpp01/ex05/Harl.hpp | 33 +++++ cpp01/ex05/Harl.o | Bin 0 -> 16360 bytes cpp01/ex05/Makefile | 62 ++++++++ cpp01/ex05/harl | Bin 0 -> 28632 bytes cpp01/ex05/main.cpp | 32 ++++ cpp01/ex05/main.o | Bin 0 -> 13312 bytes cpp01/ex06/.vscode/c_cpp_properties.json | 18 +++ cpp01/ex06/.vscode/launch.json | 24 +++ cpp01/ex06/.vscode/settings.json | 105 +++++++++++++ cpp01/ex06/Harl.cpp | 65 ++++++++ cpp01/ex06/Harl.hpp | 33 +++++ cpp01/ex06/Harl.o | Bin 0 -> 17632 bytes cpp01/ex06/Makefile | 62 ++++++++ cpp01/ex06/harlFilter | Bin 0 -> 28880 bytes cpp01/ex06/main.cpp | 29 ++++ cpp01/ex06/main.o | Bin 0 -> 11952 bytes cpp02/ex00/.vscode/c_cpp_properties.json | 18 +++ cpp02/ex00/.vscode/launch.json | 24 +++ cpp02/ex00/.vscode/settings.json | 59 ++++++++ cpp02/ex00/Fixed.cpp | 50 +++++++ cpp02/ex00/Fixed.hpp | 35 +++++ cpp02/ex00/Makefile | 62 ++++++++ cpp02/ex00/main.cpp | 31 ++++ cpp02/ex01/.vscode/c_cpp_properties.json | 18 +++ cpp02/ex01/.vscode/launch.json | 24 +++ cpp02/ex01/.vscode/settings.json | 105 +++++++++++++ cpp02/ex01/Fixed.cpp | 67 +++++++++ cpp02/ex01/Fixed.hpp | 39 +++++ cpp02/ex01/Fixed.o | Bin 0 -> 6624 bytes cpp02/ex01/Makefile | 62 ++++++++ cpp02/ex01/fixed | Bin 0 -> 17632 bytes cpp02/ex01/main.cpp | 57 +++++++ cpp02/ex01/main.o | Bin 0 -> 6504 bytes cpp02/ex02/.vscode/c_cpp_properties.json | 18 +++ cpp02/ex02/.vscode/launch.json | 24 +++ cpp02/ex02/.vscode/settings.json | 59 ++++++++ cpp02/ex02/Fixed.cpp | 180 +++++++++++++++++++++++ cpp02/ex02/Fixed.hpp | 64 ++++++++ cpp02/ex02/Fixed.o | Bin 0 -> 10688 bytes cpp02/ex02/Makefile | 62 ++++++++ cpp02/ex02/fixed | Bin 0 -> 18344 bytes cpp02/ex02/main.cpp | 27 ++++ cpp02/ex02/main.o | Bin 0 -> 5424 bytes cpp02/ex03/.vscode/c_cpp_properties.json | 18 +++ cpp02/ex03/.vscode/launch.json | 24 +++ cpp02/ex03/.vscode/settings.json | 59 ++++++++ cpp02/ex03/Fixed.cpp | 171 +++++++++++++++++++++ cpp02/ex03/Fixed.hpp | 64 ++++++++ cpp02/ex03/Fixed.o | Bin 0 -> 8824 bytes cpp02/ex03/Makefile | 64 ++++++++ cpp02/ex03/Point.cpp | 63 ++++++++ cpp02/ex03/Point.hpp | 36 +++++ cpp02/ex03/Point.o | Bin 0 -> 8144 bytes cpp02/ex03/bsp | Bin 0 -> 38384 bytes cpp02/ex03/bsp.cpp | 34 +++++ cpp02/ex03/bsp.hpp | 21 +++ cpp02/ex03/bsp.o | Bin 0 -> 7224 bytes cpp02/ex03/main.cpp | 49 ++++++ cpp02/ex03/main.o | Bin 0 -> 16736 bytes cpp03/ex00/.vscode/c_cpp_properties.json | 18 +++ cpp03/ex00/.vscode/launch.json | 24 +++ cpp03/ex00/.vscode/settings.json | 105 +++++++++++++ cpp03/ex00/ClapTrap.cpp | 114 ++++++++++++++ cpp03/ex00/ClapTrap.hpp | 55 +++++++ cpp03/ex00/ClapTrap.o | Bin 0 -> 20176 bytes cpp03/ex00/Makefile | 62 ++++++++ cpp03/ex00/claptrap | Bin 0 -> 29144 bytes cpp03/ex00/main.cpp | 45 ++++++ cpp03/ex00/main.o | Bin 0 -> 13416 bytes cpp03/ex01/.vscode/c_cpp_properties.json | 18 +++ cpp03/ex01/.vscode/launch.json | 24 +++ cpp03/ex01/.vscode/settings.json | 59 ++++++++ cpp03/ex01/ClapTrap.cpp | 114 ++++++++++++++ cpp03/ex01/ClapTrap.hpp | 55 +++++++ cpp03/ex01/Makefile | 63 ++++++++ cpp03/ex01/ScavTrap.cpp | 70 +++++++++ cpp03/ex01/ScavTrap.hpp | 31 ++++ cpp03/ex01/main.cpp | 59 ++++++++ cpp03/ex02/.vscode/c_cpp_properties.json | 18 +++ cpp03/ex02/.vscode/launch.json | 24 +++ cpp03/ex02/.vscode/settings.json | 59 ++++++++ cpp03/ex02/ClapTrap.cpp | 114 ++++++++++++++ cpp03/ex02/ClapTrap.hpp | 55 +++++++ cpp03/ex02/FragTrap.cpp | 70 +++++++++ cpp03/ex02/FragTrap.hpp | 31 ++++ cpp03/ex02/Makefile | 64 ++++++++ cpp03/ex02/ScavTrap.cpp | 70 +++++++++ cpp03/ex02/ScavTrap.hpp | 31 ++++ cpp03/ex02/main.cpp | 68 +++++++++ cpp03/ex03/.vscode/c_cpp_properties.json | 18 +++ cpp03/ex03/.vscode/launch.json | 24 +++ cpp03/ex03/.vscode/settings.json | 105 +++++++++++++ cpp03/ex03/ClapTrap.cpp | 130 ++++++++++++++++ cpp03/ex03/ClapTrap.hpp | 58 ++++++++ cpp03/ex03/DiamondTrap.cpp | 62 ++++++++ cpp03/ex03/DiamondTrap.hpp | 35 +++++ cpp03/ex03/FragTrap.cpp | 70 +++++++++ cpp03/ex03/FragTrap.hpp | 31 ++++ cpp03/ex03/Makefile | 65 ++++++++ cpp03/ex03/ScavTrap.cpp | 70 +++++++++ cpp03/ex03/ScavTrap.hpp | 31 ++++ cpp03/ex03/main.cpp | 91 ++++++++++++ cpp04/ex00/.vscode/c_cpp_properties.json | 18 +++ cpp04/ex00/.vscode/launch.json | 24 +++ cpp04/ex00/.vscode/settings.json | 67 +++++++++ cpp04/ex00/Animal.cpp | 48 ++++++ cpp04/ex00/Animal.hpp | 44 ++++++ cpp04/ex00/Cat.cpp | 41 ++++++ cpp04/ex00/Cat.hpp | 29 ++++ cpp04/ex00/Dog.cpp | 41 ++++++ cpp04/ex00/Dog.hpp | 29 ++++ cpp04/ex00/Makefile | 66 +++++++++ cpp04/ex00/WrongAnimal.cpp | 48 ++++++ cpp04/ex00/WrongAnimal.hpp | 44 ++++++ cpp04/ex00/WrongCat.cpp | 41 ++++++ cpp04/ex00/WrongCat.hpp | 29 ++++ cpp04/ex00/main.cpp | 62 ++++++++ cpp04/ex01/.vscode/c_cpp_properties.json | 18 +++ cpp04/ex01/.vscode/launch.json | 24 +++ cpp04/ex01/.vscode/settings.json | 105 +++++++++++++ cpp04/ex01/Animal.cpp | 48 ++++++ cpp04/ex01/Animal.hpp | 44 ++++++ cpp04/ex01/Brain.cpp | 59 ++++++++ cpp04/ex01/Brain.hpp | 43 ++++++ cpp04/ex01/Cat.cpp | 47 ++++++ cpp04/ex01/Cat.hpp | 34 +++++ cpp04/ex01/Dog.cpp | 47 ++++++ cpp04/ex01/Dog.hpp | 34 +++++ cpp04/ex01/Makefile | 73 +++++++++ cpp04/ex01/WrongAnimal.cpp | 48 ++++++ cpp04/ex01/WrongAnimal.hpp | 44 ++++++ cpp04/ex01/WrongCat.cpp | 41 ++++++ cpp04/ex01/WrongCat.hpp | 29 ++++ cpp04/ex01/main.cpp | 74 ++++++++++ cpp04/ex02/.vscode/c_cpp_properties.json | 18 +++ cpp04/ex02/.vscode/launch.json | 24 +++ cpp04/ex02/.vscode/settings.json | 59 ++++++++ cpp04/ex02/AAnimal.cpp | 48 ++++++ cpp04/ex02/AAnimal.hpp | 44 ++++++ cpp04/ex02/Brain.cpp | 59 ++++++++ cpp04/ex02/Brain.hpp | 43 ++++++ cpp04/ex02/Cat.cpp | 47 ++++++ cpp04/ex02/Cat.hpp | 34 +++++ cpp04/ex02/Dog.cpp | 47 ++++++ cpp04/ex02/Dog.hpp | 34 +++++ cpp04/ex02/Makefile | 73 +++++++++ cpp04/ex02/WrongAnimal.cpp | 48 ++++++ cpp04/ex02/WrongAnimal.hpp | 44 ++++++ cpp04/ex02/WrongCat.cpp | 41 ++++++ cpp04/ex02/WrongCat.hpp | 29 ++++ cpp04/ex02/main.cpp | 91 ++++++++++++ cpp04/ex03/.vscode/c_cpp_properties.json | 18 +++ cpp04/ex03/.vscode/launch.json | 24 +++ cpp04/ex03/.vscode/settings.json | 59 ++++++++ cpp04/ex03/AMateria.cpp | 27 ++++ cpp04/ex03/AMateria.hpp | 34 +++++ cpp04/ex03/AMateria.o | Bin 0 -> 5248 bytes cpp04/ex03/Character.cpp | 82 +++++++++++ cpp04/ex03/Character.hpp | 36 +++++ cpp04/ex03/Character.o | Bin 0 -> 9424 bytes cpp04/ex03/Cure.cpp | 35 +++++ cpp04/ex03/Cure.hpp | 30 ++++ cpp04/ex03/Cure.o | Bin 0 -> 15568 bytes cpp04/ex03/ICharacter.hpp | 31 ++++ cpp04/ex03/IMateriaSource.hpp | 26 ++++ cpp04/ex03/Ice.cpp | 35 +++++ cpp04/ex03/Ice.hpp | 30 ++++ cpp04/ex03/Ice.o | Bin 0 -> 15552 bytes cpp04/ex03/Makefile | 72 +++++++++ cpp04/ex03/MateriaSource.cpp | 68 +++++++++ cpp04/ex03/MateriaSource.hpp | 34 +++++ cpp04/ex03/MateriaSource.o | Bin 0 -> 18040 bytes cpp04/ex03/main.cpp | 70 +++++++++ cpp04/ex03/main.o | Bin 0 -> 15640 bytes cpp04/ex03/materia | Bin 0 -> 43104 bytes 267 files changed, 10113 insertions(+) create mode 100644 cpp00/ex00/Makefile create mode 100755 cpp00/ex00/a.out create mode 100755 cpp00/ex00/megaphone create mode 100644 cpp00/ex00/megaphone.cpp create mode 100644 cpp00/ex00/megaphone.o create mode 100644 cpp00/ex01/.vscode/c_cpp_properties.json create mode 100644 cpp00/ex01/.vscode/launch.json create mode 100644 cpp00/ex01/.vscode/settings.json create mode 100644 cpp00/ex01/Contact.cpp create mode 100644 cpp00/ex01/Contact.hpp create mode 100644 cpp00/ex01/Contact.o create mode 100644 cpp00/ex01/Makefile create mode 100644 cpp00/ex01/PhoneBook.cpp create mode 100644 cpp00/ex01/PhoneBook.hpp create mode 100644 cpp00/ex01/PhoneBook.o create mode 100644 cpp00/ex01/main.cpp create mode 100644 cpp00/ex01/main.o create mode 100755 cpp00/ex01/phonebook create mode 100644 cpp00/ex02/.vscode/c_cpp_properties.json create mode 100644 cpp00/ex02/.vscode/launch.json create mode 100644 cpp00/ex02/.vscode/settings.json create mode 100644 cpp00/ex02/19920104_091532.log create mode 100644 cpp00/ex02/Account.cpp create mode 100644 cpp00/ex02/Account.hpp create mode 100644 cpp00/ex02/Account.o create mode 100644 cpp00/ex02/Makefile create mode 100755 cpp00/ex02/bank create mode 100644 cpp00/ex02/tests.cpp create mode 100644 cpp00/ex02/tests.o create mode 100644 cpp01/ex00/.vscode/c_cpp_properties.json create mode 100644 cpp01/ex00/.vscode/launch.json create mode 100644 cpp01/ex00/.vscode/settings.json create mode 100644 cpp01/ex00/Makefile create mode 100644 cpp01/ex00/Zombie.cpp create mode 100644 cpp01/ex00/Zombie.hpp create mode 100644 cpp01/ex00/Zombie.o create mode 100644 cpp01/ex00/main.cpp create mode 100644 cpp01/ex00/main.o create mode 100644 cpp01/ex00/newZombie.cpp create mode 100644 cpp01/ex00/newZombie.o create mode 100644 cpp01/ex00/randomChump.cpp create mode 100644 cpp01/ex00/randomChump.o create mode 100755 cpp01/ex00/zombie create mode 100644 cpp01/ex01/.vscode/c_cpp_properties.json create mode 100644 cpp01/ex01/.vscode/launch.json create mode 100644 cpp01/ex01/.vscode/settings.json create mode 100644 cpp01/ex01/Makefile create mode 100644 cpp01/ex01/Zombie.cpp create mode 100644 cpp01/ex01/Zombie.hpp create mode 100644 cpp01/ex01/Zombie.o create mode 100755 cpp01/ex01/horde create mode 100644 cpp01/ex01/main.cpp create mode 100644 cpp01/ex01/main.o create mode 100644 cpp01/ex01/zombieHorde.cpp create mode 100644 cpp01/ex01/zombieHorde.o create mode 100644 cpp01/ex02/.vscode/c_cpp_properties.json create mode 100644 cpp01/ex02/.vscode/launch.json create mode 100644 cpp01/ex02/.vscode/settings.json create mode 100644 cpp01/ex02/Makefile create mode 100755 cpp01/ex02/brain create mode 100644 cpp01/ex02/main.cpp create mode 100644 cpp01/ex02/main.o create mode 100644 cpp01/ex03/.vscode/c_cpp_properties.json create mode 100644 cpp01/ex03/.vscode/launch.json create mode 100644 cpp01/ex03/.vscode/settings.json create mode 100644 cpp01/ex03/HumanA.cpp create mode 100644 cpp01/ex03/HumanA.hpp create mode 100644 cpp01/ex03/HumanA.o create mode 100644 cpp01/ex03/HumanB.cpp create mode 100644 cpp01/ex03/HumanB.hpp create mode 100644 cpp01/ex03/HumanB.o create mode 100644 cpp01/ex03/Makefile create mode 100644 cpp01/ex03/Weapon.cpp create mode 100644 cpp01/ex03/Weapon.hpp create mode 100644 cpp01/ex03/Weapon.o create mode 100644 cpp01/ex03/main.cpp create mode 100644 cpp01/ex03/main.o create mode 100755 cpp01/ex03/weapon create mode 100644 cpp01/ex04/.vscode/c_cpp_properties.json create mode 100644 cpp01/ex04/.vscode/launch.json create mode 100644 cpp01/ex04/.vscode/settings.json create mode 100644 cpp01/ex04/Makefile create mode 100644 cpp01/ex04/main.cpp create mode 100644 cpp01/ex04/main.o create mode 100755 cpp01/ex04/replace create mode 100644 cpp01/ex04/test create mode 100644 cpp01/ex04/test.replace create mode 100644 cpp01/ex04/test.txt.replace create mode 100644 cpp01/ex05/.vscode/c_cpp_properties.json create mode 100644 cpp01/ex05/.vscode/launch.json create mode 100644 cpp01/ex05/.vscode/settings.json create mode 100644 cpp01/ex05/Harl.cpp create mode 100644 cpp01/ex05/Harl.hpp create mode 100644 cpp01/ex05/Harl.o create mode 100644 cpp01/ex05/Makefile create mode 100755 cpp01/ex05/harl create mode 100644 cpp01/ex05/main.cpp create mode 100644 cpp01/ex05/main.o create mode 100644 cpp01/ex06/.vscode/c_cpp_properties.json create mode 100644 cpp01/ex06/.vscode/launch.json create mode 100644 cpp01/ex06/.vscode/settings.json create mode 100644 cpp01/ex06/Harl.cpp create mode 100644 cpp01/ex06/Harl.hpp create mode 100644 cpp01/ex06/Harl.o create mode 100644 cpp01/ex06/Makefile create mode 100755 cpp01/ex06/harlFilter create mode 100644 cpp01/ex06/main.cpp create mode 100644 cpp01/ex06/main.o create mode 100644 cpp02/ex00/.vscode/c_cpp_properties.json create mode 100644 cpp02/ex00/.vscode/launch.json create mode 100644 cpp02/ex00/.vscode/settings.json create mode 100644 cpp02/ex00/Fixed.cpp create mode 100644 cpp02/ex00/Fixed.hpp create mode 100644 cpp02/ex00/Makefile create mode 100644 cpp02/ex00/main.cpp create mode 100644 cpp02/ex01/.vscode/c_cpp_properties.json create mode 100644 cpp02/ex01/.vscode/launch.json create mode 100644 cpp02/ex01/.vscode/settings.json create mode 100644 cpp02/ex01/Fixed.cpp create mode 100644 cpp02/ex01/Fixed.hpp create mode 100644 cpp02/ex01/Fixed.o create mode 100644 cpp02/ex01/Makefile create mode 100755 cpp02/ex01/fixed create mode 100644 cpp02/ex01/main.cpp create mode 100644 cpp02/ex01/main.o create mode 100644 cpp02/ex02/.vscode/c_cpp_properties.json create mode 100644 cpp02/ex02/.vscode/launch.json create mode 100644 cpp02/ex02/.vscode/settings.json create mode 100644 cpp02/ex02/Fixed.cpp create mode 100644 cpp02/ex02/Fixed.hpp create mode 100644 cpp02/ex02/Fixed.o create mode 100644 cpp02/ex02/Makefile create mode 100755 cpp02/ex02/fixed create mode 100644 cpp02/ex02/main.cpp create mode 100644 cpp02/ex02/main.o create mode 100644 cpp02/ex03/.vscode/c_cpp_properties.json create mode 100644 cpp02/ex03/.vscode/launch.json create mode 100644 cpp02/ex03/.vscode/settings.json create mode 100644 cpp02/ex03/Fixed.cpp create mode 100644 cpp02/ex03/Fixed.hpp create mode 100644 cpp02/ex03/Fixed.o create mode 100644 cpp02/ex03/Makefile create mode 100644 cpp02/ex03/Point.cpp create mode 100644 cpp02/ex03/Point.hpp create mode 100644 cpp02/ex03/Point.o create mode 100755 cpp02/ex03/bsp create mode 100644 cpp02/ex03/bsp.cpp create mode 100644 cpp02/ex03/bsp.hpp create mode 100644 cpp02/ex03/bsp.o create mode 100644 cpp02/ex03/main.cpp create mode 100644 cpp02/ex03/main.o create mode 100644 cpp03/ex00/.vscode/c_cpp_properties.json create mode 100644 cpp03/ex00/.vscode/launch.json create mode 100644 cpp03/ex00/.vscode/settings.json create mode 100644 cpp03/ex00/ClapTrap.cpp create mode 100644 cpp03/ex00/ClapTrap.hpp create mode 100644 cpp03/ex00/ClapTrap.o create mode 100644 cpp03/ex00/Makefile create mode 100755 cpp03/ex00/claptrap create mode 100644 cpp03/ex00/main.cpp create mode 100644 cpp03/ex00/main.o create mode 100644 cpp03/ex01/.vscode/c_cpp_properties.json create mode 100644 cpp03/ex01/.vscode/launch.json create mode 100644 cpp03/ex01/.vscode/settings.json create mode 100644 cpp03/ex01/ClapTrap.cpp create mode 100644 cpp03/ex01/ClapTrap.hpp create mode 100644 cpp03/ex01/Makefile create mode 100644 cpp03/ex01/ScavTrap.cpp create mode 100644 cpp03/ex01/ScavTrap.hpp create mode 100644 cpp03/ex01/main.cpp create mode 100644 cpp03/ex02/.vscode/c_cpp_properties.json create mode 100644 cpp03/ex02/.vscode/launch.json create mode 100644 cpp03/ex02/.vscode/settings.json create mode 100644 cpp03/ex02/ClapTrap.cpp create mode 100644 cpp03/ex02/ClapTrap.hpp create mode 100644 cpp03/ex02/FragTrap.cpp create mode 100644 cpp03/ex02/FragTrap.hpp create mode 100644 cpp03/ex02/Makefile create mode 100644 cpp03/ex02/ScavTrap.cpp create mode 100644 cpp03/ex02/ScavTrap.hpp create mode 100644 cpp03/ex02/main.cpp create mode 100644 cpp03/ex03/.vscode/c_cpp_properties.json create mode 100644 cpp03/ex03/.vscode/launch.json create mode 100644 cpp03/ex03/.vscode/settings.json 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 create mode 100644 cpp04/ex00/.vscode/c_cpp_properties.json create mode 100644 cpp04/ex00/.vscode/launch.json create mode 100644 cpp04/ex00/.vscode/settings.json create mode 100644 cpp04/ex00/Animal.cpp create mode 100644 cpp04/ex00/Animal.hpp create mode 100644 cpp04/ex00/Cat.cpp create mode 100644 cpp04/ex00/Cat.hpp create mode 100644 cpp04/ex00/Dog.cpp create mode 100644 cpp04/ex00/Dog.hpp create mode 100644 cpp04/ex00/Makefile create mode 100644 cpp04/ex00/WrongAnimal.cpp create mode 100644 cpp04/ex00/WrongAnimal.hpp create mode 100644 cpp04/ex00/WrongCat.cpp create mode 100644 cpp04/ex00/WrongCat.hpp create mode 100644 cpp04/ex00/main.cpp create mode 100644 cpp04/ex01/.vscode/c_cpp_properties.json create mode 100644 cpp04/ex01/.vscode/launch.json create mode 100644 cpp04/ex01/.vscode/settings.json create mode 100644 cpp04/ex01/Animal.cpp create mode 100644 cpp04/ex01/Animal.hpp create mode 100644 cpp04/ex01/Brain.cpp create mode 100644 cpp04/ex01/Brain.hpp create mode 100644 cpp04/ex01/Cat.cpp create mode 100644 cpp04/ex01/Cat.hpp create mode 100644 cpp04/ex01/Dog.cpp create mode 100644 cpp04/ex01/Dog.hpp create mode 100644 cpp04/ex01/Makefile create mode 100644 cpp04/ex01/WrongAnimal.cpp create mode 100644 cpp04/ex01/WrongAnimal.hpp create mode 100644 cpp04/ex01/WrongCat.cpp create mode 100644 cpp04/ex01/WrongCat.hpp create mode 100644 cpp04/ex01/main.cpp create mode 100644 cpp04/ex02/.vscode/c_cpp_properties.json create mode 100644 cpp04/ex02/.vscode/launch.json create mode 100644 cpp04/ex02/.vscode/settings.json create mode 100644 cpp04/ex02/AAnimal.cpp create mode 100644 cpp04/ex02/AAnimal.hpp create mode 100644 cpp04/ex02/Brain.cpp create mode 100644 cpp04/ex02/Brain.hpp create mode 100644 cpp04/ex02/Cat.cpp create mode 100644 cpp04/ex02/Cat.hpp create mode 100644 cpp04/ex02/Dog.cpp create mode 100644 cpp04/ex02/Dog.hpp create mode 100644 cpp04/ex02/Makefile create mode 100644 cpp04/ex02/WrongAnimal.cpp create mode 100644 cpp04/ex02/WrongAnimal.hpp create mode 100644 cpp04/ex02/WrongCat.cpp create mode 100644 cpp04/ex02/WrongCat.hpp create mode 100644 cpp04/ex02/main.cpp create mode 100644 cpp04/ex03/.vscode/c_cpp_properties.json create mode 100644 cpp04/ex03/.vscode/launch.json create mode 100644 cpp04/ex03/.vscode/settings.json create mode 100644 cpp04/ex03/AMateria.cpp create mode 100644 cpp04/ex03/AMateria.hpp create mode 100644 cpp04/ex03/AMateria.o create mode 100644 cpp04/ex03/Character.cpp create mode 100644 cpp04/ex03/Character.hpp create mode 100644 cpp04/ex03/Character.o create mode 100644 cpp04/ex03/Cure.cpp create mode 100644 cpp04/ex03/Cure.hpp create mode 100644 cpp04/ex03/Cure.o create mode 100644 cpp04/ex03/ICharacter.hpp create mode 100644 cpp04/ex03/IMateriaSource.hpp create mode 100644 cpp04/ex03/Ice.cpp create mode 100644 cpp04/ex03/Ice.hpp create mode 100644 cpp04/ex03/Ice.o create mode 100644 cpp04/ex03/Makefile create mode 100644 cpp04/ex03/MateriaSource.cpp create mode 100644 cpp04/ex03/MateriaSource.hpp create mode 100644 cpp04/ex03/MateriaSource.o create mode 100644 cpp04/ex03/main.cpp create mode 100644 cpp04/ex03/main.o create mode 100755 cpp04/ex03/materia diff --git a/cpp00/ex00/Makefile b/cpp00/ex00/Makefile new file mode 100644 index 0000000..9473fd1 --- /dev/null +++ b/cpp00/ex00/Makefile @@ -0,0 +1,61 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/23 16:15:46 by fgras-ca #+# #+# # +# Updated: 2023/12/23 16:39:11 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = megaphone + +SRC = megaphone.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation megaphone... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./megaphone" with arguments or not!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp00/ex00/a.out b/cpp00/ex00/a.out new file mode 100755 index 0000000000000000000000000000000000000000..5b331620ea557fe3bccf6eb5e7b546b82a2bc4e0 GIT binary patch literal 16664 zcmeHOeQ;b=6~CLbG)UW|K%oSsE22ZG*(Pb)DRe5Ek4;}BO+!AUAn>x;-DcO>FL&QU ziWH*3k4)N`RtD@J{85~7z>(29fFLtM_-e%gY(*K6aSV=i5)GQBm5B;nf9KwNHg8{d z8R$6vq3`azckcO}bMCqC+;`u;yL;~4fzI{{k4JE+6rU54TcHrY7VNm1HH7esO=20& ztHovF9Kefk__f$c->6Umrd3+65|r##QKba^xPk>!?jcdKD_3gHRT8G6M)72~n5vq0 z(wy!GQ8RwVji;DKo*8d{F5PC?C*NmQCvQ3 z;bHF4{>qKR0Ub}KdN{?pcx-TE)4F)LE*?wfhU#=}`LqIhnPWEW~V>7Sh2^VI%FPMEL#DEaEmL%$EiuY2f4(xHBn4e3y!_ISvN zr}{D+q@&`oU)Bkuay0U4V&#FQt%^JId?%pu&xAz>8Z3o>u?#+0rk!7w!Q0E=tID)b zaq!}BmS`D$z$NuRTLymuc&Y2X1`S>AbPB#6_zF=g{C*{@A%|2}1qb61B`Yntsn?2UJ9@2#hEOz^F|AB6W@S4rY}NFN`yXWiFP-_CH*svMxtp;XR7;6lSeb7w3WjK}Uk za7@g&kd9*_7)xq}pcNU8S;9)?(&

Kq+g5Lu=R4RNP2xNY%D>cC@ta*kP{sH3?Za z8-42+s*S!47_3S>BP(!L9}nstd@3a-M^o}?j4j`P)|zkQQCTU*^mvoa-C9l-kL|x7 z({PcvPh+{-7`}lj#6hjk&wYO0PU`Q~w0^EL-g$xYKkUE{YW*s|lCwVZKfhMt^eo_K z03k&Hs#gorkCJ3=`t5u^zfbb? zf-yIJtiaQY#oY9>1)jdx=ca#L;OPr}Zu-FjPhaG7)BBl+w>s&qO-O&>-|><61^&2$ z|DA*Xje~#1!M|wd8{X*{J9euv_6KA1kF(uxHiUTZu% zUuk#_8^=yt7ovfPZlEeZxl>*z+f#f;wtNra5V^Je#^{#wp(%{9xA437U_rBrr>ZKK)Ic#sjm)0b}olFQP7t@xY|vIcki< zE--&2aEidcG>!*O86lv7c?he2BC4OBK$|JFNj38PsC0E?YBR9Wz$uT@;+~1zQ&9U# zp{rlh27i8^3}#_4yE!mZy(fW-MMO_x<)^OcMy+@Zit-9xdfpa{nz7yQjpgP?cfaS! zZT{-+`FtLcZiJ`xIuuXA4D4I7z2{J?m4d_Y@r1;VOx*yLeG9EVO>I0w@tL|8owSR8@6iXxeFO-VsjvnC|uJK&DbV=1djnjYrQP_Wm z6xx=^zjCiYwFyTW{?ddmuW4Vt>hsm--Ci{!uC2Z1s`Xb~PB67gexHP%G$as(a0|yF z-~*ss$k!emZ^Pd*TCxR}*LR<#0XG6}1l$O?5pW~mM!=20|5*e$?~C)iIIoMA98@Uhj0*FVV@74E zB89wV{QV_MROgGyH3tyRGrLsFdF@lHdCn`N^$r!z@%sDee2Vx(I{Auos{Fdbxm0gx zIp=^qqWj0WU#qAQl$DAU&e}|j=zJ@++7x1+)}VD670%7NSg~S6caZS`UEzLvwSUgt zV*i(Ed)E6`UR@v5C4_$$<@MI+_VE9lcXq>0SCTb<2=7uzXKHy@^`zN z6+-=^LRr=xagpHpAwit(#6f;}-ZK6zR6MxLdA>3J5Gtkm|G3nz71ulbz5txse^)0V z%ik7&ozgfzCwP9Bi%%6U#DiZq20jTxM=8~xi{yo0P{_MylQpuPi-q%kY?Sz_!u(}@ z19*+NMAY~hQS^08BrkB`z_&wx1!Y`&l^)NhTY+D$prUgn@blqeT92>%Z3Y^Lfio->i zx8C9=B-aSMlzw{|{r)m|s!ThgHAPG3kYB;1=;!VFQ$ zeHNPGlsObn4F=<8*h*!xW-vD_La9VL9d z7~2Mr;hzghzCIQc=GM;bEzO-U$qkwvrcR1)?`hr^Faup}wA;YMJ`poumy1`LC zo81}3ZPHE++VxP3nlu(_%L4``N#ih>%`#AW2SsrUAF$g*@0d{f*bE_qS7NhDnGGpt zY~P^$Aw|xGFS{#Y1qVT`jG|Gl#gf?kk`}&X%8K}gk~v>Glfw25YnKfg%*C+1Di+pI zb4y1ZO>3zh4Q8Xl7v7bG3q`GrlH3-_WHDii7!$HgBpxIKT}#I;;gcijL)ABw0!x)_ zBqV&;QUX@qguYBlP6%Hls%LgIjMkV_ZKx@(EVvF=!9)y=DRYdQ@Zs5#z$2r?AvU67w|DLfr2k{=g}=`k zqxUVlJ-_cU^|GR-PWu~xzl(Qo?mw?jm|m&vczxpRe-Lt7o3K5vUzpN9GAh(ZsghY^W*QG5x8- zp5GgpMtEQx_T20<4tsuoWy-$;u)cHtP%W2IXf-fdp2FaZZN8E um`^~q5(oF6pFi|F0r%ZzE*@@D+`SGV`(<5Pra4rkX!9neQR^^pu;Sk-I`4@9 literal 0 HcmV?d00001 diff --git a/cpp00/ex00/megaphone b/cpp00/ex00/megaphone new file mode 100755 index 0000000000000000000000000000000000000000..5b331620ea557fe3bccf6eb5e7b546b82a2bc4e0 GIT binary patch literal 16664 zcmeHOeQ;b=6~CLbG)UW|K%oSsE22ZG*(Pb)DRe5Ek4;}BO+!AUAn>x;-DcO>FL&QU ziWH*3k4)N`RtD@J{85~7z>(29fFLtM_-e%gY(*K6aSV=i5)GQBm5B;nf9KwNHg8{d z8R$6vq3`azckcO}bMCqC+;`u;yL;~4fzI{{k4JE+6rU54TcHrY7VNm1HH7esO=20& ztHovF9Kefk__f$c->6Umrd3+65|r##QKba^xPk>!?jcdKD_3gHRT8G6M)72~n5vq0 z(wy!GQ8RwVji;DKo*8d{F5PC?C*NmQCvQ3 z;bHF4{>qKR0Ub}KdN{?pcx-TE)4F)LE*?wfhU#=}`LqIhnPWEW~V>7Sh2^VI%FPMEL#DEaEmL%$EiuY2f4(xHBn4e3y!_ISvN zr}{D+q@&`oU)Bkuay0U4V&#FQt%^JId?%pu&xAz>8Z3o>u?#+0rk!7w!Q0E=tID)b zaq!}BmS`D$z$NuRTLymuc&Y2X1`S>AbPB#6_zF=g{C*{@A%|2}1qb61B`Yntsn?2UJ9@2#hEOz^F|AB6W@S4rY}NFN`yXWiFP-_CH*svMxtp;XR7;6lSeb7w3WjK}Uk za7@g&kd9*_7)xq}pcNU8S;9)?(&

Kq+g5Lu=R4RNP2xNY%D>cC@ta*kP{sH3?Za z8-42+s*S!47_3S>BP(!L9}nstd@3a-M^o}?j4j`P)|zkQQCTU*^mvoa-C9l-kL|x7 z({PcvPh+{-7`}lj#6hjk&wYO0PU`Q~w0^EL-g$xYKkUE{YW*s|lCwVZKfhMt^eo_K z03k&Hs#gorkCJ3=`t5u^zfbb? zf-yIJtiaQY#oY9>1)jdx=ca#L;OPr}Zu-FjPhaG7)BBl+w>s&qO-O&>-|><61^&2$ z|DA*Xje~#1!M|wd8{X*{J9euv_6KA1kF(uxHiUTZu% zUuk#_8^=yt7ovfPZlEeZxl>*z+f#f;wtNra5V^Je#^{#wp(%{9xA437U_rBrr>ZKK)Ic#sjm)0b}olFQP7t@xY|vIcki< zE--&2aEidcG>!*O86lv7c?he2BC4OBK$|JFNj38PsC0E?YBR9Wz$uT@;+~1zQ&9U# zp{rlh27i8^3}#_4yE!mZy(fW-MMO_x<)^OcMy+@Zit-9xdfpa{nz7yQjpgP?cfaS! zZT{-+`FtLcZiJ`xIuuXA4D4I7z2{J?m4d_Y@r1;VOx*yLeG9EVO>I0w@tL|8owSR8@6iXxeFO-VsjvnC|uJK&DbV=1djnjYrQP_Wm z6xx=^zjCiYwFyTW{?ddmuW4Vt>hsm--Ci{!uC2Z1s`Xb~PB67gexHP%G$as(a0|yF z-~*ss$k!emZ^Pd*TCxR}*LR<#0XG6}1l$O?5pW~mM!=20|5*e$?~C)iIIoMA98@Uhj0*FVV@74E zB89wV{QV_MROgGyH3tyRGrLsFdF@lHdCn`N^$r!z@%sDee2Vx(I{Auos{Fdbxm0gx zIp=^qqWj0WU#qAQl$DAU&e}|j=zJ@++7x1+)}VD670%7NSg~S6caZS`UEzLvwSUgt zV*i(Ed)E6`UR@v5C4_$$<@MI+_VE9lcXq>0SCTb<2=7uzXKHy@^`zN z6+-=^LRr=xagpHpAwit(#6f;}-ZK6zR6MxLdA>3J5Gtkm|G3nz71ulbz5txse^)0V z%ik7&ozgfzCwP9Bi%%6U#DiZq20jTxM=8~xi{yo0P{_MylQpuPi-q%kY?Sz_!u(}@ z19*+NMAY~hQS^08BrkB`z_&wx1!Y`&l^)NhTY+D$prUgn@blqeT92>%Z3Y^Lfio->i zx8C9=B-aSMlzw{|{r)m|s!ThgHAPG3kYB;1=;!VFQ$ zeHNPGlsObn4F=<8*h*!xW-vD_La9VL9d z7~2Mr;hzghzCIQc=GM;bEzO-U$qkwvrcR1)?`hr^Faup}wA;YMJ`poumy1`LC zo81}3ZPHE++VxP3nlu(_%L4``N#ih>%`#AW2SsrUAF$g*@0d{f*bE_qS7NhDnGGpt zY~P^$Aw|xGFS{#Y1qVT`jG|Gl#gf?kk`}&X%8K}gk~v>Glfw25YnKfg%*C+1Di+pI zb4y1ZO>3zh4Q8Xl7v7bG3q`GrlH3-_WHDii7!$HgBpxIKT}#I;;gcijL)ABw0!x)_ zBqV&;QUX@qguYBlP6%Hls%LgIjMkV_ZKx@(EVvF=!9)y=DRYdQ@Zs5#z$2r?AvU67w|DLfr2k{=g}=`k zqxUVlJ-_cU^|GR-PWu~xzl(Qo?mw?jm|m&vczxpRe-Lt7o3K5vUzpN9GAh(ZsghY^W*QG5x8- zp5GgpMtEQx_T20<4tsuoWy-$;u)cHtP%W2IXf-fdp2FaZZN8E um`^~q5(oF6pFi|F0r%ZzE*@@D+`SGV`(<5Pra4rkX!9neQR^^pu;Sk-I`4@9 literal 0 HcmV?d00001 diff --git a/cpp00/ex00/megaphone.cpp b/cpp00/ex00/megaphone.cpp new file mode 100644 index 0000000..dac741e --- /dev/null +++ b/cpp00/ex00/megaphone.cpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* megaphone.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/23 16:14:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/23 16:28:52 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include + +int main(int argc, char **argv) +{ + if (argc == 1) + { + std::cout << "* LOUD AND UNBEARABLE FEEDBACK NOISE *" << std::endl; + return (0); + } + for (int i = 1; i < argc; i++) + { + char *str = argv[i]; + for (int j = 0; str[j]; j++) + { + std::cout << (char)toupper(str[j]); + } + std::cout << " "; + } + std::cout << std::endl; + return (0); +} \ No newline at end of file diff --git a/cpp00/ex00/megaphone.o b/cpp00/ex00/megaphone.o new file mode 100644 index 0000000000000000000000000000000000000000..509003581df4ad6cbd30f13b1c40d7e76b54bf24 GIT binary patch literal 3320 zcmbuB-D_M$6u{?hVp_GyuC;r{nhi)uo9lEN;UB{dx^3D(X%mdeZ%Ojj8qbL~&Ot*H?otwlH61?~^nf`F~l zbTj!`Wp{ViY;-wOe1czYOU+2tS9a=Ab9H4$i%wr%Y3}Y45)HR^;;j%p`l)TW)83=y za(yrBEzI#F_UHZ=P|Stf*n=TGKeI5Yj}<2Mg~B);n;RR?Q+s?b9!MWSETw7 z(b4x2nVy(xIu03~a!3VSywFSwq$X z1La6-BHEQXqAjPiqlXS0ybiTK4;%+dKh{nMQlBIy`ulo%HE@Y-ug6wG-o#nh6K|k7 zwx8$r=VbeAZ045z6K>T@{)CS0m!6JKIGzPh^r$33)g+F2h4jST5L#CZ&TXC`J`1o5Fb+%gh`17P?6)dq0G;^PUHHu|{O>Nj59;fbf1nGW?846@hlfNJ zw~PPPE}T@Hi&kyPt2%~Vs}c5AG0dN2%=O%=8-hBLVJrx((6t#7*DAYLK=Z21sxGoc zCkXw>j`g(b5;mQm86V3-NK|4uRo*>iR~>&(2$5;X`6`AMie5RO zvr}_LugE9~y{J}m{Qp!T)CcLpldcyqID#{hgFa1U=q19~V&JhQXjIwh z?>CY^-eFPay5x`bzrgi-5|``$jdQjBEzZ^YA9l%;fae=UJy(WvtRLT{qRvy2Ki)^d zvy%T)5ldq$QS&{xH6i%M!OjwU$G0jDFYSL#Iz(fS`jjkLuD{RwE6j>Yj)DPu zpA`;#PVy-sE6eIPzJIzXZHf{|33E z$>XqpPr?xKqJN$C#*j6>{{}xWe#aQA#^XCy{q6yg8(0*`=SssAmEgOtQ+$nY^l_YJ I??a9M2d#4@00000 literal 0 HcmV?d00001 diff --git a/cpp00/ex01/.vscode/c_cpp_properties.json b/cpp00/ex01/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp00/ex01/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp00/ex01/.vscode/launch.json b/cpp00/ex01/.vscode/launch.json new file mode 100644 index 0000000..7df13e0 --- /dev/null +++ b/cpp00/ex01/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp00/ex01", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp00/ex01/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp00/ex01/.vscode/settings.json b/cpp00/ex01/.vscode/settings.json new file mode 100644 index 0000000..93af90c --- /dev/null +++ b/cpp00/ex01/.vscode/settings.json @@ -0,0 +1,108 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/cpp00/ex01/Contact.cpp b/cpp00/ex01/Contact.cpp new file mode 100644 index 0000000..cc78b39 --- /dev/null +++ b/cpp00/ex01/Contact.cpp @@ -0,0 +1,97 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Contact.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/23 17:17:14 by fgras-ca #+# #+# */ +/* Updated: 2023/12/23 20:52:55 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Contact.hpp" + +Contact::Contact() {} + +void Contact::SetDetails() +{ + std::cout << "First Name: "; + std::cin >> _first_name; + std::cin.ignore(std::numeric_limits::max(), '\n'); + std::cout << "Last Name: "; + std::cin >> _last_name; + std::cin.ignore(std::numeric_limits::max(), '\n'); + std::cout << "Nickname: "; + std::cin >> _nickname; + std::cin.ignore(std::numeric_limits::max(), '\n'); + while (true) + { + std::cout << "Phone Number: "; + std::cin >> _phone_number; + + bool isValid = true; + for (char c : _phone_number) + { + if (!std::isdigit(c)) + { + isValid = false; + break; + } + } + if (isValid) + { + std::cin.ignore(std::numeric_limits::max(), '\n'); + break; + } + else + { + std::cout << "Invalid input. A phone number should contain only digits (0-9)." << std::endl; + std::cin.ignore(std::numeric_limits::max(), '\n'); + } + } + std::cout << "Darkest Secret: "; + std::getline(std::cin, _darkest_secret); +} + +Contact::~Contact() {} + +void Contact::DisplaySummary(int index) const +{ + std::string redBar = "\033[31m|\033[0m"; + std::cout << std::setw(8) << index << redBar; + if (_first_name.length() > 10) + { + std::cout << std::setw(10) << _first_name.substr(0,9) + "." << redBar; + } + else + { + std::cout << std::setw(10) << _first_name << redBar; + } + if (_last_name.length() > 10) + { + std::cout << std::setw(10) << _last_name.substr(0,9) + "." << redBar; + } + else + { + std::cout << std::setw(10) << _last_name << redBar; + } + if (_nickname.length() > 10) + { + std::cout << std::setw(10) << _nickname.substr(0,9) + "." << redBar; + } + else + { + std::cout << std::setw(10) << _nickname << redBar; + } + std::cout << std::endl; +} + +void Contact::DisplayDetails() const +{ + std::cout << "First Name: " << _first_name << std::endl; + std::cout << "Last Name: " << _last_name << std::endl; + std::cout << "Nickname: " << _nickname << std::endl; + std::cout << "Phone Number: " << _phone_number << std::endl; + std::cout << "Darkest Secret: " << _darkest_secret << std::endl; +} \ No newline at end of file diff --git a/cpp00/ex01/Contact.hpp b/cpp00/ex01/Contact.hpp new file mode 100644 index 0000000..4650fa4 --- /dev/null +++ b/cpp00/ex01/Contact.hpp @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Contact.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/23 16:56:55 by fgras-ca #+# #+# */ +/* Updated: 2023/12/23 19:49:10 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CONTACT_HPP +# define CONTACT_HPP + +#include +#include +#include +#include + +class Contact +{ + public: + Contact(); + ~Contact(); + void SetDetails(); + void DisplaySummary(int index) const; + void DisplayDetails() const; + + private: + std::string _first_name; + std::string _last_name; + std::string _nickname; + std::string _phone_number; + std::string _darkest_secret; +}; + +#endif \ No newline at end of file diff --git a/cpp00/ex01/Contact.o b/cpp00/ex01/Contact.o new file mode 100644 index 0000000000000000000000000000000000000000..7a3f9318b94c6ad474ac3c62c6cf1cad3e5ba145 GIT binary patch literal 22680 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 P^=2h*H9`F(>GJ;zSbVqG literal 0 HcmV?d00001 diff --git a/cpp00/ex01/Makefile b/cpp00/ex01/Makefile new file mode 100644 index 0000000..9c546f2 --- /dev/null +++ b/cpp00/ex01/Makefile @@ -0,0 +1,63 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/23 18:31:36 by fgras-ca #+# #+# # +# Updated: 2023/12/23 19:06:37 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = phonebook + +SRC = PhoneBook.cpp \ + Contact.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation bookphone... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./phonebook"!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp00/ex01/PhoneBook.cpp b/cpp00/ex01/PhoneBook.cpp new file mode 100644 index 0000000..3923a9b --- /dev/null +++ b/cpp00/ex01/PhoneBook.cpp @@ -0,0 +1,69 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* PhoneBook.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/23 18:01:39 by fgras-ca #+# #+# */ +/* Updated: 2023/12/23 20:52:57 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "PhoneBook.hpp" + +PhoneBook::PhoneBook() : next_index(0), total_contacts(0) {} + +PhoneBook::~PhoneBook() {} + +void PhoneBook::AddContact() +{ + contacts[next_index].SetDetails(); + next_index = (next_index + 1) % 8; + if (total_contacts < 8) + { + total_contacts++; + } + std::cout << "Contact added successfully!" << std::endl; +} + +void PhoneBook::SearchContact() const +{ + std::cout << "\033[31m"; + std::cout << "------------------------------------------" << std::endl; + std::cout << std::setw(8) << "Index" << "|" + << std::setw(10) << "First" << "|" + << std::setw(10) << "Last" << "|" + << std::setw(10) << "Nickname" << "|" << std::endl; + std::cout << "------------------------------------------" << std::endl; + std::cout << "\033[0m"; + for (int i = 0; i < total_contacts; ++i) + { + contacts[i].DisplaySummary(i + 1); + } + std::cout << "\033[31m"; + std::cout << "------------------------------------------" << std::endl; + std::cout << "\033[0m"; + while (true) + { + std::cout << "Enter the index of the contact to display: "; + int index; + std::cin >> index; + + if (std::cin.fail()) + { + std::cin.clear(); + std::cin.ignore(std::numeric_limits::max(), '\n'); + std::cout << "Invalid input. Please enter a number." << std::endl; + } + else if (index < 1 || index > total_contacts) + { + std::cout << "Invalid index. Please enter a number between 1 and " << total_contacts << "." << std::endl; + } + else + { + contacts[index - 1].DisplayDetails(); + break; + } + } +} \ No newline at end of file diff --git a/cpp00/ex01/PhoneBook.hpp b/cpp00/ex01/PhoneBook.hpp new file mode 100644 index 0000000..4287087 --- /dev/null +++ b/cpp00/ex01/PhoneBook.hpp @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* PhoneBook.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/23 17:55:10 by fgras-ca #+# #+# */ +/* Updated: 2023/12/23 19:52:34 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PHONEBOOK_HPP +# define PHONEBOOK_HPP + +#include "Contact.hpp" +#include +#include +#include +#include + +class PhoneBook +{ + public: + PhoneBook(); + ~PhoneBook(); + + void AddContact(); + void SearchContact() const; + + private: + Contact contacts[8]; + int next_index; + int total_contacts; +}; + +#endif \ No newline at end of file diff --git a/cpp00/ex01/PhoneBook.o b/cpp00/ex01/PhoneBook.o new file mode 100644 index 0000000000000000000000000000000000000000..ec4463e9ea5323cb121fbf78a30bdf6a36886153 GIT binary patch literal 8728 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 R6*OnnxG{lLxC~rf_Ft-R5vu?I literal 0 HcmV?d00001 diff --git a/cpp00/ex01/main.cpp b/cpp00/ex01/main.cpp new file mode 100644 index 0000000..093ad4e --- /dev/null +++ b/cpp00/ex01/main.cpp @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/23 18:16:58 by fgras-ca #+# #+# */ +/* Updated: 2023/12/23 18:31:05 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Contact.hpp" +#include "PhoneBook.hpp" + +int main() +{ + PhoneBook phonebook; + std::string command; + + while (true) + { + std::cout << "Enter command (ADD, SEARCH, or EXIT): "; + std::cin >> command; + + if (command == "ADD") + { + phonebook.AddContact(); + } + else if (command == "SEARCH") + { + phonebook.SearchContact(); + } + else if (command == "EXIT") + { + break; + } + else + { + std::cout << "Command not recognized." << std::endl; + } + } + return (0); +} \ No newline at end of file diff --git a/cpp00/ex01/main.o b/cpp00/ex01/main.o new file mode 100644 index 0000000000000000000000000000000000000000..c1733913068114495036739b7e9effe2b2ae5ed3 GIT binary patch literal 5456 zcmb_gUu+ab7@zAQAc8H3prUvxNKx3_m1^ssn3i^7YYUWKtHg+t?cUP6^m<$O_OQjE z62N#iBuzBY#77?>KKNja2^#eR5u-1}2Ms1Z@M2N}F&JY~33`6N-I;c7dy5+VlG&N> zH{ZYc=G&RQds*+>(GZIX1?XF>M^V+r1fA*`hawm+Vmz&Cmua!%)M-N|%l^#2C zc(z()tkg2M1es%z@-uT2=ZvYEZJ3_7`Wb9|j-8)*gO<1dES5*47d+cdSkBm(S;!=s zJG;BLB+`24K$o#4;kXHXU(ev?M-z;27QhS;>kbi{b;aQ_xxiHk!wQ1Kb7xoAqlxCB;ZngXB~mG^ zRZDJ7m3%h!QcH`LY~3tiUuO|Lo2VfVJ9iJU2F5DD;?zKQ1|5qX>hBw1v5BT7?*Li1 zZuyd>)0CbK#Grv*Cmy;?zq#qvhOQNhjid4SWQ-&kTMe8jcF4C9llrhPeP|Gny0)+8 z&pi&D=qWtpe8VnZ0J_ftC%PREIo}`X1FA>Z*+uLZ+T?{4pId$HT%0Yg1&9mIhj|=! zCB@kiIjrg9j1p3Z;tVHFEn!U!6c2I>@^e6a4>jNy1@5n%uzl24De+6a{e<7sfKx0W z8Nnp6*#9t15l|2RA_6}jfiI!>>e*?Ez>9?6tK`A239?;@kpCe9zZQY7q5`iM&#nmk zxd{C22>iVW{B#7KiOAd65%MeO#jF?qM&P6qrj`i#CnIn+X66c-H9pSxGik4{o%5WN zE95+4TT`4DJ=4os97xX0=ME9)6gVA)JYyFs znrk1>I3Jmq;N!MibP8m|o8$+RWPkS~{aL4AZ+D#0u9SWdNZM=T+?tq3rBW@!W|2IT zlU!k>$4Yytl$AAI?zv{pEB07=+N6grG}B(I<&+S0+RGPv7E0>_gl!9KI%L!~$9k+m zuBRX3{k@j2x6PuEVZbHx3oQix6f-$tW{?ji$xs^~h>kzq%E{AUitD=X!hSy5#qdCH zv?1S_Z>PVPERr!Ljj3d3Ce!5!*bgS{lAqpN+~bZtGT0t&Z1=M*^=irv~nRUgzB&lDY=rLxbHW2~uG zD2R^=*W{*WPte=L9uO}k?#JcSuF*#Y=n)0S=`8UMf#a3N-7N7Z6&&BA5+4va?BkPG z;+DW+2j_;wM+FY~l?smg03`k17qIM@=pny~nzZwlg5RRxCj~C;Y!dtjio9wE_X-I1 z@vR{3e+!UE+L8CcMIR01RXdjiF6Flg{x=0z^Y({gN6p(Jx<5eJw>8vcJdFZJoNE<) zvx48I;Oz>IJ6hT?6Q9tMRBSn6_f`6*W->u+Z zD!6Lr8-XJ~2}S;Ufg?ZnD7dU6;CCrF4Sj+dVwK-B0UG@FlHZ5GP-7s--sF#hN3$3M zN0XEi17P!CX^dqRT>VOWO~Iifzn@Np@VPj(;^dfT4l|8T|Deyxk!$BojoyEcX&KWq znKoQ3GR<`YX2i0%Jz?479w$9INa$`9@*2+E|LsZ$?BdGirt6xM!V#jtl$LiaGp}9m zZr1R7$1c!1==Y1Q(eH$<^dVr43Vx(e(#BnfE_6>Cx3m0!Ytpf-jkr!}TqN&5bO|aD zoKs=y5CG0p5Y7&q2dFcU?4$Ji0x|zg#t{0bE2$^@1YxLAwT6iGzqirSzlAW^jM5Lwhk3k5z{2kK z31AP+sU+i<81A`x`X`0He6OW^*nhv!UmObHW5LUNAxgiOCj9(|^ryv7BAI98AHTw6 z{1QJ!819X5{$_+dDNiCkNnZBv5?XKnPu1~{`jdLn|7pUIlXxipD}UpkRDAl7p7qvW zspB6|*#D1&!GDsPO0&X0>PscLf3p9XCgoU_+YnBum<-GQNjT2w(DGTc&`$_G*~$1N zzlIFLW?0`4`V}cC`mp{=Qm(gu7exN1g&yh$=a1Bv`&Z95RF=XhQBuT#Ki6<1g!NIA f^-|R?F0ZFUlkle!&d!jCKb=KU6Kx79gjn_$N@(Gh literal 0 HcmV?d00001 diff --git a/cpp00/ex01/phonebook b/cpp00/ex01/phonebook new file mode 100755 index 0000000000000000000000000000000000000000..d1e55e68b43a0773183b793259fa44fdd70c2dfe GIT binary patch literal 31032 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 RrmcTU3zxXmR>6j9{|zGJf?)sv literal 0 HcmV?d00001 diff --git a/cpp00/ex02/.vscode/c_cpp_properties.json b/cpp00/ex02/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp00/ex02/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp00/ex02/.vscode/launch.json b/cpp00/ex02/.vscode/launch.json new file mode 100644 index 0000000..ef89af7 --- /dev/null +++ b/cpp00/ex02/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp00/ex02", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp00/ex02/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp00/ex02/.vscode/settings.json b/cpp00/ex02/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp00/ex02/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp00/ex02/19920104_091532.log b/cpp00/ex02/19920104_091532.log new file mode 100644 index 0000000..7263771 --- /dev/null +++ b/cpp00/ex02/19920104_091532.log @@ -0,0 +1,59 @@ +[19920104_091532] index:0;amount:42;created +[19920104_091532] index:1;amount:54;created +[19920104_091532] index:2;amount:957;created +[19920104_091532] index:3;amount:432;created +[19920104_091532] index:4;amount:1234;created +[19920104_091532] index:5;amount:0;created +[19920104_091532] index:6;amount:754;created +[19920104_091532] index:7;amount:16576;created +[19920104_091532] accounts:8;total:20049;deposits:0;withdrawals:0 +[19920104_091532] index:0;amount:42;deposits:0;withdrawals:0 +[19920104_091532] index:1;amount:54;deposits:0;withdrawals:0 +[19920104_091532] index:2;amount:957;deposits:0;withdrawals:0 +[19920104_091532] index:3;amount:432;deposits:0;withdrawals:0 +[19920104_091532] index:4;amount:1234;deposits:0;withdrawals:0 +[19920104_091532] index:5;amount:0;deposits:0;withdrawals:0 +[19920104_091532] index:6;amount:754;deposits:0;withdrawals:0 +[19920104_091532] index:7;amount:16576;deposits:0;withdrawals:0 +[19920104_091532] index:0;p_amount:42;deposit:5;amount:47;nb_deposits:1 +[19920104_091532] index:1;p_amount:54;deposit:765;amount:819;nb_deposits:1 +[19920104_091532] index:2;p_amount:957;deposit:564;amount:1521;nb_deposits:1 +[19920104_091532] index:3;p_amount:432;deposit:2;amount:434;nb_deposits:1 +[19920104_091532] index:4;p_amount:1234;deposit:87;amount:1321;nb_deposits:1 +[19920104_091532] index:5;p_amount:0;deposit:23;amount:23;nb_deposits:1 +[19920104_091532] index:6;p_amount:754;deposit:9;amount:763;nb_deposits:1 +[19920104_091532] index:7;p_amount:16576;deposit:20;amount:16596;nb_deposits:1 +[19920104_091532] accounts:8;total:21524;deposits:8;withdrawals:0 +[19920104_091532] index:0;amount:47;deposits:1;withdrawals:0 +[19920104_091532] index:1;amount:819;deposits:1;withdrawals:0 +[19920104_091532] index:2;amount:1521;deposits:1;withdrawals:0 +[19920104_091532] index:3;amount:434;deposits:1;withdrawals:0 +[19920104_091532] index:4;amount:1321;deposits:1;withdrawals:0 +[19920104_091532] index:5;amount:23;deposits:1;withdrawals:0 +[19920104_091532] index:6;amount:763;deposits:1;withdrawals:0 +[19920104_091532] index:7;amount:16596;deposits:1;withdrawals:0 +[19920104_091532] index:0;p_amount:47;withdrawal:refused +[19920104_091532] index:1;p_amount:819;withdrawal:34;amount:785;nb_withdrawals:1 +[19920104_091532] index:2;p_amount:1521;withdrawal:657;amount:864;nb_withdrawals:1 +[19920104_091532] index:3;p_amount:434;withdrawal:4;amount:430;nb_withdrawals:1 +[19920104_091532] index:4;p_amount:1321;withdrawal:76;amount:1245;nb_withdrawals:1 +[19920104_091532] index:5;p_amount:23;withdrawal:refused +[19920104_091532] index:6;p_amount:763;withdrawal:657;amount:106;nb_withdrawals:1 +[19920104_091532] index:7;p_amount:16596;withdrawal:7654;amount:8942;nb_withdrawals:1 +[19920104_091532] accounts:8;total:12442;deposits:8;withdrawals:6 +[19920104_091532] index:0;amount:47;deposits:1;withdrawals:0 +[19920104_091532] index:1;amount:785;deposits:1;withdrawals:1 +[19920104_091532] index:2;amount:864;deposits:1;withdrawals:1 +[19920104_091532] index:3;amount:430;deposits:1;withdrawals:1 +[19920104_091532] index:4;amount:1245;deposits:1;withdrawals:1 +[19920104_091532] index:5;amount:23;deposits:1;withdrawals:0 +[19920104_091532] index:6;amount:106;deposits:1;withdrawals:1 +[19920104_091532] index:7;amount:8942;deposits:1;withdrawals:1 +[19920104_091532] index:0;amount:47;closed +[19920104_091532] index:1;amount:785;closed +[19920104_091532] index:2;amount:864;closed +[19920104_091532] index:3;amount:430;closed +[19920104_091532] index:4;amount:1245;closed +[19920104_091532] index:5;amount:23;closed +[19920104_091532] index:6;amount:106;closed +[19920104_091532] index:7;amount:8942;closed diff --git a/cpp00/ex02/Account.cpp b/cpp00/ex02/Account.cpp new file mode 100644 index 0000000..ab12ad5 --- /dev/null +++ b/cpp00/ex02/Account.cpp @@ -0,0 +1,119 @@ +// ************************************************************************** // +// // +// Account.cpp for GlobalBanksters United // +// Created on : Sat Dec 23 19:43:15 2023 // +// // +// Made by : fgras-ca // +// // +// ************************************************************************** // + +#include "Account.hpp" +#include +#include +#include +#include + +// Initialisation des variables statiques +int Account::_nbAccounts = 0; +int Account::_totalAmount = 0; +int Account::_totalNbDeposits = 0; +int Account::_totalNbWithdrawals = 0; + +// Constructeur : Initialise un compte avec un dépôt initial et met à jour les informations globales +Account::Account(int initial_deposit) : _amount(initial_deposit), _nbDeposits(0), _nbWithdrawals(0) +{ + _accountIndex = _nbAccounts++; // Assignation d'un index unique au compte et incrémentation du nombre total de comptes + _totalAmount += _amount; // Mise à jour du montant total détenu par tous les comptes + _displayTimestamp(); // Affichage de l'horodatage de la création du compte + std::cout << "index:" << _accountIndex << ";amount:" << _amount << ";created\n"; // Enregistrement de la création du compte +} + +// Destructeur : Met à jour les informations globales lors de la fermeture d'un compte +Account::~Account() +{ + _nbAccounts--; // Décrémentation du nombre total de comptes + _totalAmount -= _amount; // Mise à jour du montant total détenu par tous les comptes + _displayTimestamp(); // Affichage de l'horodatage de la fermeture du compte + std::cout << "index:" << _accountIndex << ";amount:" << _amount << ";closed\n"; // Enregistrement de la fermeture du compte +} + +// Dépôts : Ajoute un montant au compte et met à jour les informations globales +void Account::makeDeposit(int deposit) +{ + _displayTimestamp(); // Affichage de l'horodatage de l'opération + std::cout << "index:" << _accountIndex << ";p_amount:" << _amount << ";deposit:" << deposit; + _amount += deposit; // Mise à jour du montant dans le compte + _nbDeposits++; // Incrémentation du nombre de dépôts pour ce compte + _totalAmount += deposit; // Mise à jour du montant total détenu par tous les comptes + _totalNbDeposits++; // Incrémentation du nombre total de dépôts effectués sur tous les comptes + std::cout << ";amount:" << _amount << ";nb_deposits:" << _nbDeposits << "\n"; // Enregistrement de l'opération de dépôt +} + +// Retraits : Diminue le montant du compte si possible et met à jour les informations globales +bool Account::makeWithdrawal(int withdrawal) +{ + _displayTimestamp(); // Affichage de l'horodatage de l'opération + std::cout << "index:" << _accountIndex << ";p_amount:" << _amount << ";withdrawal:"; + if (withdrawal > _amount) + { // Vérification si le retrait est possible (fonds suffisants) + std::cout << "refused\n"; // Enregistrement d'un retrait refusé + return (false); + } + _amount -= withdrawal; // Mise à jour du montant dans le compte + _nbWithdrawals++; // Incrémentation du nombre de retraits pour ce compte + _totalAmount -= withdrawal; // Mise à jour du montant total détenu par tous les comptes + _totalNbWithdrawals++; // Incrémentation du nombre total de retraits effectués sur tous les comptes + std::cout << withdrawal << ";amount:" << _amount << ";nb_withdrawals:" << _nbWithdrawals << "\n"; // Enregistrement de l'opération de retrait + return (true); +} + +// Vérifier le montant : Retourne le montant actuel du compte +int Account::checkAmount() const +{ + return (_amount); +} + +// Afficher le statut du compte : Affiche les informations détaillées sur le compte +void Account::displayStatus() const +{ + _displayTimestamp(); // Affichage de l'horodatage de l'opération + std::cout << "index:" << _accountIndex << ";amount:" << _amount + << ";deposits:" << _nbDeposits << ";withdrawals:" << _nbWithdrawals << "\n"; // Enregistrement de l'état actuel du compte +} + +// Retourner le nombre total de comptes +int Account::getNbAccounts() { return _nbAccounts; } + +// Retourner le montant total détenu par tous les comptes +int Account::getTotalAmount() { return _totalAmount; } + +// Retourner le nombre total de dépôts effectués sur tous les comptes +int Account::getNbDeposits() { return _totalNbDeposits; } + +// Retourner le nombre total de retraits effectués sur tous les comptes +int Account::getNbWithdrawals() { return _totalNbWithdrawals; } + +// Afficher les informations globales de tous les comptes +void Account::displayAccountsInfos() +{ + _displayTimestamp(); // Affichage de l'horodatage de l'opération + std::cout << "accounts:" << getNbAccounts() << ";total:" << getTotalAmount() + << ";deposits:" << getNbDeposits() << ";withdrawals:" << getNbWithdrawals() << "\n"; // Enregistrement des informations globales +} + +void Account::_displayTimestamp() +{ +// Obtenir l'heure et la date actuelles + std::time_t now = std::time(nullptr); + std::tm *ltm = std::localtime(&now); + + std::cout << "[" + << 1900 + ltm->tm_year // Ajouter 1900 pour obtenir l'année complète + << std::setw(2) << std::setfill('0') << 1 + ltm->tm_mon // Mois (0-11 donc +1 pour 1-12) + << std::setw(2) << std::setfill('0') << ltm->tm_mday // Jour (1-31) + << "_" + << std::setw(2) << std::setfill('0') << ltm->tm_hour // Heures (0-23) + << std::setw(2) << std::setfill('0') << ltm->tm_min // Minutes (0-59) + << std::setw(2) << std::setfill('0') << ltm->tm_sec // Secondes (0-59) + << "] "; +} diff --git a/cpp00/ex02/Account.hpp b/cpp00/ex02/Account.hpp new file mode 100644 index 0000000..cd31e06 --- /dev/null +++ b/cpp00/ex02/Account.hpp @@ -0,0 +1,69 @@ +// ************************************************************************** // +// // +// Account.hpp for GlobalBanksters United // +// Created on : Thu Nov 20 19:43:15 1989 // +// Last update : Wed Jan 04 14:54:06 1992 // +// Made by : Brad "Buddy" McLane // +// // +// ************************************************************************** // + + +#pragma once +#ifndef __ACCOUNT_H__ +#define __ACCOUNT_H__ + +// ************************************************************************** // +// Account Class // +// ************************************************************************** // + +class Account { + + +public: + + typedef Account t; + + static int getNbAccounts( void ); + static int getTotalAmount( void ); + static int getNbDeposits( void ); + static int getNbWithdrawals( void ); + static void displayAccountsInfos( void ); + + Account( int initial_deposit ); + ~Account( void ); + + void makeDeposit( int deposit ); + bool makeWithdrawal( int withdrawal ); + int checkAmount( void ) const; + void displayStatus( void ) const; + + +private: + + static int _nbAccounts; + static int _totalAmount; + static int _totalNbDeposits; + static int _totalNbWithdrawals; + + static void _displayTimestamp( void ); + + int _accountIndex; + int _amount; + int _nbDeposits; + int _nbWithdrawals; + + Account( void ); + +}; + + + +// ************************************************************************** // +// vim: set ts=4 sw=4 tw=80 noexpandtab: // +// -*- indent-tabs-mode:t; -*- +// -*- mode: c++-mode; -*- +// -*- fill-column: 75; comment-column: 75; -*- +// ************************************************************************** // + + +#endif /* __ACCOUNT_H__ */ diff --git a/cpp00/ex02/Account.o b/cpp00/ex02/Account.o new file mode 100644 index 0000000000000000000000000000000000000000..dd9e3aa2ee7dbdfb58c69209eca859c56dae532f GIT binary patch literal 11416 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 // +// // +// ************************************************************************** // + +#include +#include +#include +#include "Account.hpp" + + +int main( void ) { + + typedef std::vector accounts_t; + typedef std::vector ints_t; + typedef std::pair acc_int_t; + + int const amounts[] = { 42, 54, 957, 432, 1234, 0, 754, 16576 }; + size_t const amounts_size( sizeof(amounts) / sizeof(int) ); + accounts_t accounts( amounts, amounts + amounts_size ); + accounts_t::iterator acc_begin = accounts.begin(); + accounts_t::iterator acc_end = accounts.end(); + + int const d[] = { 5, 765, 564, 2, 87, 23, 9, 20 }; + size_t const d_size( sizeof(d) / sizeof(int) ); + ints_t deposits( d, d + d_size ); + ints_t::iterator dep_begin = deposits.begin(); + ints_t::iterator dep_end = deposits.end(); + + int const w[] = { 321, 34, 657, 4, 76, 275, 657, 7654 }; + size_t const w_size( sizeof(w) / sizeof(int) ); + ints_t withdrawals( w, w + w_size ); + ints_t::iterator wit_begin = withdrawals.begin(); + ints_t::iterator wit_end = withdrawals.end(); + + Account::displayAccountsInfos(); + std::for_each( acc_begin, acc_end, std::mem_fun_ref( &Account::displayStatus ) ); + + for ( acc_int_t it( acc_begin, dep_begin ); + it.first != acc_end && it.second != dep_end; + ++(it.first), ++(it.second) ) { + + (*(it.first)).makeDeposit( *(it.second) ); + } + + Account::displayAccountsInfos(); + std::for_each( acc_begin, acc_end, std::mem_fun_ref( &Account::displayStatus ) ); + + for ( acc_int_t it( acc_begin, wit_begin ); + it.first != acc_end && it.second != wit_end; + ++(it.first), ++(it.second) ) { + + (*(it.first)).makeWithdrawal( *(it.second) ); + } + + Account::displayAccountsInfos(); + std::for_each( acc_begin, acc_end, std::mem_fun_ref( &Account::displayStatus ) ); + + return 0; +} + + +// ************************************************************************** // +// vim: set ts=4 sw=4 tw=80 noexpandtab: // +// -*- indent-tabs-mode:t; -*- +// -*- mode: c++-mode; -*- +// -*- fill-column: 75; comment-column: 75; -*- +// ************************************************************************** // diff --git a/cpp00/ex02/tests.o b/cpp00/ex02/tests.o new file mode 100644 index 0000000000000000000000000000000000000000..cc5d64447fbc02f70025fa4ac2f271b1d6e9eb32 GIT binary patch literal 60032 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 +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/24 13:55:45 by fgras-ca #+# #+# # +# Updated: 2023/12/24 13:59:56 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = zombie + +SRC = newZombie.cpp \ + main.cpp \ + randomChump.cpp \ + Zombie.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation zombie... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./zombie" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp01/ex00/Zombie.cpp b/cpp01/ex00/Zombie.cpp new file mode 100644 index 0000000..1d2e41a --- /dev/null +++ b/cpp01/ex00/Zombie.cpp @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Zombie.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 13:31:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 14:06:52 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Zombie.hpp" + +Zombie::Zombie(void) +{ + std::cout << "\033[32m"; + std::cout << "Constructor called" << std::endl; + std::cout << "\033[0m"; +} + +Zombie::~Zombie(void) +{ + std::cout << "\033[31m"; + std::cout << "Destructor called" << std::endl; + std::cout << "\033[0m"; +} + +void Zombie::announce(void) +{ + std::cout << this->name << ": BraiiiiiiinnnZ..." << std::endl; +} + +void Zombie::setname(std::string name) +{ + this->name = name; +} \ No newline at end of file diff --git a/cpp01/ex00/Zombie.hpp b/cpp01/ex00/Zombie.hpp new file mode 100644 index 0000000..6ca7012 --- /dev/null +++ b/cpp01/ex00/Zombie.hpp @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Zombie.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 13:23:44 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 13:30:20 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef ZOMBIE_HPP +# define ZOMBIE_HPP + +#include + +class Zombie +{ + public: + Zombie(void); + ~Zombie(void); + void announce(void); + void setname(std::string name); + + private: + std::string name; +}; + +Zombie* newZombie(std::string name); +void randomChump(std::string name); + +#endif diff --git a/cpp01/ex00/Zombie.o b/cpp01/ex00/Zombie.o new file mode 100644 index 0000000000000000000000000000000000000000..2a5513b00f537ca64c13a3030a873a91128a858b GIT binary patch literal 5288 zcmcInU1(fI6rSDm-~PnfYBja2C{o2iw>K47 zYv7l{V%ZIYV#;;$d2fg{9BeGmV|%*5+B|b`cWPhJ$wlP*{(xm!Y;G>GGTm{Uy`LcG z#Gn`!Q+sRc?$p-)!LlEgQ|YwTY&C96mj#=Ct*OasY<^6_LU##0>#1Qr?cMz>$=F3; zb<{wcqmCtx^>p>J#900EGe8;|Rxe+1ib8mV7&Oo%HRv*XZT(xx)-}uQ6LraVNsyov zwJvI)y%y&r@t_>FhmzRIBElMi-lT?lG3f#Uarl)Q zIJVe0`TJ_%y)|&R2L3?}e6&V9=SV&-51&hXlJr2TPQI;y-;nrb>OnnG$9^R~ZoXM6 z5%|qZc~QTlbB6FZ`5QIxTfnKA^k)tEd+7s@v(E;C!eGv`+|g0S2eM(;F3xj7&d-I! zHm5l+g-)1rIgp%_&mAK!@VVm;@gcd3fp5&^7;o=7uy1b{sgwtK2j>IbJ0jz)P4*Gi z_M%nv4qKcLkB#wBuUHCvG8Z1@M;ggfcQ)L~xjQzNPN$m&of3JZEi&g1cevRwopwi@ zA`fYY3`-rZoptD8x2DM|LT+}0GNR3f`BKMXX}g!O?UBuZjCxL?!|mgC_DSB;=~kmY zuz!En?&E!X_jTDkvg`Rn`8fY^7D=;_Z0>++cQ(kE?4JF-*&xep0sQ0HwTapF`>*CG z)4g7)T<~B>Wi*<*V%w15`O!$XD!j|_{h;i-p3E0zsb*4RawTWBllOMkUZrd^r+oIM zxh>`^!`xZ&LfI5{EqY0fi4qT=^AOPQrW**Zm%mxaoI7!|$ed zW&gB>uh;O8C9eEFAo(veT=)B>#7)0fHF?}=Qj))>;kuolC2rceDRHcup0^oIUeDX_ z5?Ar7ys5tuz;(YX<$iDa-KgPu-gZdbw6jN(-$XuCo->*}@}TN0tI6y2HXw0xzMdwp z&-Wb-$66`BpGh2X;tr|sOPW0HCW};@ExAT+45$A)N{7udN77eFYK^R6% z>i!dGqfXd{yt+S} zGjMfJxN6|)zBg^))%jYbqlM5JWELHHQ9q*IieBEaXm1OdHROa2vj$5gW)*{o8FpRn zjk(@v$VrbjNjkSl9v1-a6pPML2|yY{Rz9GAIM&~t@0J@B3Z75?{2=r!`romQt`+Vp zk{|ZV)@U)HOF^iNdn5dCkxmX~4Htv*sGQ_~=)NIcd|xKDNMN<>A%i-=cM4K{ir!H> z`kE74{g1O$FA~BHmf;(KtrluJZIwlL7DZ14|Ik(UZ+zpRN2$TT6aysadDD@^A*<69 z#K2}PeN*1#QTM=1cgp{>G^UfOkMk`~ANO96xi+RgzOS{^%=kZ&`YK2y)r!}{u^ z@~3*7!|Gj^n>ON6W2WqfG=P7frud8mQc6+wDt-l@rx(~X_3Pz=t}q;$`k#_+-1>>4 zpt0-JKv+MV-%4MtUz~5qZ-P;xDH#~| KF6ydJQ~xhfq_Cp^ literal 0 HcmV?d00001 diff --git a/cpp01/ex00/main.cpp b/cpp01/ex00/main.cpp new file mode 100644 index 0000000..3c8d144 --- /dev/null +++ b/cpp01/ex00/main.cpp @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 13:52:26 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 14:04:53 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Zombie.hpp" + +int main() +{ + Zombie *heapZombie = newZombie("HeapZombie"); + heapZombie->announce(); + delete heapZombie; + std::cout << "\033[31m"; + std::cout << "HeapZombie Deleted!!" << std::endl << std::endl; + std::cout << "\033[0m"; + randomChump("StackZombie"); + + return (0); +} \ No newline at end of file diff --git a/cpp01/ex00/main.o b/cpp01/ex00/main.o new file mode 100644 index 0000000000000000000000000000000000000000..0f0b8ea5ed54ccfd61fe454efd5a13c800547a33 GIT binary patch literal 12488 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 13:38:34 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 13:46:55 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Zombie.hpp" + +Zombie* newZombie(std::string name) +{ + Zombie *z = new Zombie(); + z->setname(name); + return (z); +} \ No newline at end of file diff --git a/cpp01/ex00/newZombie.o b/cpp01/ex00/newZombie.o new file mode 100644 index 0000000000000000000000000000000000000000..b42e90f7b659fd031eba8a51e95d23c804a95219 GIT binary patch literal 3760 zcmbVOTWl0n7(TNt7m-T^A{q#(!Ard`>C{G0(X^DM)3}s|Z8cV!lj-cxPS~Aoc4uKB zsiKXBO+|@5VB#hEpy?yNDA5Rw5Qq{9?-8^1OYd;jocV3Y ztWD45%-PoaI!I^M(hJ7?g?8#LkkI&|S^H6S$Ih9vkdZm_RC?a5eP`CLgsNb8dC@W$ zD%ETn9t%11;f+BCf6uQ^p@MJurlP^zSuh)gBbeX4?g%jaY)$r>@#btALiOK127Ned=j0;%kg}3YV z`q;&KUEA~kS$8daMHBm|b8y*5ns`s!h8#)g@9TS_y<=p&;`x#2ZUB_Tk$TK&6`)RSb3W2yq5+L z;9C;-iuBsH*HV3JmiNEjGSiy+icG~u@C5C65Jh8u#OEB(!hn5K``{Mnc7Z3{jSuUG z0yUUKU=#!;Rmz+4k_(w z)i8{%ajQ%L$=CHJ2JEbF81|%9l77i@{qlgF&RXqK*smsG zd)#jT{2CJGU62IuYe|@Y3nT$N-X7-P2T1^rbIkl%kc4=gFGKn!`}qie2lYA5HO1qq z;q7PsFU2GNh6vC948R_5JKL|K`v=71Y*hS1q`Q-Z?YAf%@i#?y>IQ%svH0B#S-i=3 zHyc200BjqtW@8`0Ll}nYfWvPeV^Ve4p5Nn>F@CWgy?m_TTjN5f+Z?u&+$%YGOQ-YX z3q5D~me9w`WuZ^lwsfktGv!ONr(;T2ob2$rNUKz`jwu2zQ0e)iZRPcUdkS>BSSUCi zJq0l~XEKrg-+Z-p-RN&Qlyciol%! zaCWgj*l&Q_cIsnK$ETAaDrr5;d%Zj*3{vGNuzY;`g IeB%E90Pa#yEC2ui literal 0 HcmV?d00001 diff --git a/cpp01/ex00/randomChump.cpp b/cpp01/ex00/randomChump.cpp new file mode 100644 index 0000000..43ab0dc --- /dev/null +++ b/cpp01/ex00/randomChump.cpp @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* randomChump.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 13:23:25 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 13:50:16 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Zombie.hpp" + +void randomChump(std::string name) +{ + Zombie z; + z.setname(name); + z.announce(); +} \ No newline at end of file diff --git a/cpp01/ex00/randomChump.o b/cpp01/ex00/randomChump.o new file mode 100644 index 0000000000000000000000000000000000000000..adddc6d8158f9a10ff4a19c89b7bc7d95ef22dbd GIT binary patch literal 3784 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 a*d~ywSIN%6K|cLg>BNL`sZGI#vi|}5yvWZ0 literal 0 HcmV?d00001 diff --git a/cpp01/ex01/.vscode/c_cpp_properties.json b/cpp01/ex01/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp01/ex01/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp01/ex01/.vscode/launch.json b/cpp01/ex01/.vscode/launch.json new file mode 100644 index 0000000..d18b655 --- /dev/null +++ b/cpp01/ex01/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex01", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex01/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp01/ex01/.vscode/settings.json b/cpp01/ex01/.vscode/settings.json new file mode 100644 index 0000000..ebd8700 --- /dev/null +++ b/cpp01/ex01/.vscode/settings.json @@ -0,0 +1,105 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/cpp01/ex01/Makefile b/cpp01/ex01/Makefile new file mode 100644 index 0000000..b3a4a71 --- /dev/null +++ b/cpp01/ex01/Makefile @@ -0,0 +1,63 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/24 13:55:45 by fgras-ca #+# #+# # +# Updated: 2023/12/24 15:34:53 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = horde + +SRC = zombieHorde.cpp \ + main.cpp \ + Zombie.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation horde... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./horde" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re diff --git a/cpp01/ex01/Zombie.cpp b/cpp01/ex01/Zombie.cpp new file mode 100644 index 0000000..5c7dc9f --- /dev/null +++ b/cpp01/ex01/Zombie.cpp @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Zombie.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 13:31:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 15:30:35 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Zombie.hpp" + +int Zombie::count = 0; + +Zombie::Zombie(void) : id(++count) +{ + std::cout << "\033[32m"; + std::cout << "Constructor called for zombie [" << id << "]" << std::endl; + std::cout << "\033[0m"; +} + +Zombie::~Zombie(void) +{ + std::cout << "\033[31m"; + std::cout << "Destructor called for zombie [" << id << "]" << std::endl; + std::cout << "\033[0m"; +} + +void Zombie::announce(void) +{ + std::cout << this->name << ": BraiiiiiiinnnZ..." << std::endl; +} + +void Zombie::setname(std::string name) +{ + this->name = name; +} \ No newline at end of file diff --git a/cpp01/ex01/Zombie.hpp b/cpp01/ex01/Zombie.hpp new file mode 100644 index 0000000..fdc388f --- /dev/null +++ b/cpp01/ex01/Zombie.hpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Zombie.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 13:23:44 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 15:24:50 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef ZOMBIE_HPP +# define ZOMBIE_HPP + +#include +#include + +class Zombie +{ + public: + Zombie(void); + ~Zombie(void); + void announce(void); + void setname(std::string name); + + private: + std::string name; + int id; + static int count; +}; + +Zombie* zombieHorde(int N, std::string name); + +#endif \ No newline at end of file diff --git a/cpp01/ex01/Zombie.o b/cpp01/ex01/Zombie.o new file mode 100644 index 0000000000000000000000000000000000000000..e521af55723c6f429505a1f7f12c125c26fc4242 GIT binary patch literal 5728 zcmb_gTWDNG7@pl|tG&inp&G3#6sfmEHcf4^$?f>0mI} zm6{iYm5k?>O8!J<4>b>lY%ON6g7;>X%T z9-wkn8YgcoSX;<5RIrb1`GSB}__qo8YD#D;{uK%Mh6FrFz#mS)-%h|EONjFn@muBR zw8qcqL}0H&&LrT!YWx`05VgOlUP|lKDi0yy@cW(StNl*=Hxu~3Cg98I0dJ=QdT23DtZz~(Jd7ZQZEdo8%)RveFUQ4 zSu6^gN*cc<@SqhcRCe+k0a&e^t7DvE7dR{ z2hjn!zZ29#v`I>DdODlUc8$ALih)ktVldh76{2j`+v`?jL}zSN?e}s8mws}+S+a^r zbdy8GUx-T8{)Oz^Fku^Fn;{wX-EzM-B6Ed}a%jL)zQa;A*PPL=zP>_kM2_6PbucGm z4}LIFY86Q<+oah^)^CLB&H_vi^$i!of>bH_=kwgA<~bVNU!+wS_N%qB56e2+It$$0 zhEz94W8DUMvl|4oIG(RFNBK%jZ;PzynQfB81Ig=E=$4e(k*v&_TVPYwj{>*s=aLl@ zBl(wka|^lQ0g6T~L$tXVRwZo$zq_CIcAPaiQ4Qr@+T10T(Sk*alSiA&bFz`{0 zvmJgD`s_V+rj$=g7Xib2yEvCfF$6rqQdwq z07=;X)p1w6p=;n~{O@So_WQYkuckKJ$NLNdKJGD${|1nR{azP$MVmgqZNE!3Zu?zj z@Uf2F+Ro($ZpObZ!Oms_H}k*Mumk(+wEZ0h-`o!)8n^Q=4ZfNGJ(hjW|CE87@lP9e zOut7A+|2(=33gsH_?OX~cwOEy_?T}&&-bLkH~oI1aeKaB8hmrUd^^WF;{M5guf>9s zpyE3=`du0a{|YM1zscaQHSk^oH|^}uIO4<^!gfXt`xyhLrV>m86uuwEDDI>}s841M zAm({utiL!ddR>rc1HK_HgNE<29RTMrTl`=_oY`YobN@SS~%Z_ zf3)z%e4Xlna^#K+hhFG$y_Z`RzvMb}UPr>2a3fbZInpp5%Y1PLZzhua}0U9^G1|YjCg+ux}w;XQ++6W3D-M8{dF6 zbCVEmbwvkZu+>AwlneBxdqg{ef9Ude$Qn()nriqrpA8J1upI#;0oRo4sRNs~{s&qg zXND;}Z^p3iVbgYZN(1|tsB4a&;hU(@N`He62xpBccKmq0@a)*}=QUva<385|q}wY0 zNAc1i;XEV%&|y8sUBVDko0Wi}zwu8hO7Oj|{9F3ZxA4D&xVHZ%34{MmDyH0}{bPMi z;rwy^G!1gwA=nN1Z(ug)9m&+pa3{ LSzI-KZT&w0@(vY` literal 0 HcmV?d00001 diff --git a/cpp01/ex01/horde b/cpp01/ex01/horde new file mode 100755 index 0000000000000000000000000000000000000000..abccd4b69920b55666dc805fcc51bf5d6d29bdfa GIT binary patch literal 29056 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 RI{EcixA7Y1Nk?7u{~O{JX8ZsE literal 0 HcmV?d00001 diff --git a/cpp01/ex01/main.cpp b/cpp01/ex01/main.cpp new file mode 100644 index 0000000..c091f84 --- /dev/null +++ b/cpp01/ex01/main.cpp @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 15:17:37 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 15:32:08 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Zombie.hpp" + +int main() +{ + int N; + std::cout << "\033[32m"; + std::cout << "Entrez le nombre de zombies à créer: "; + std::cout << "\033[0m"; + std::cin >> N; + if(std::cin.fail() || N < 1) + { + std::cerr << "\033[31m"; + std::cerr << "Entrée invalide. Veuillez entrer un nombre entier positif!!" << std::endl; + std::cerr << "\033[0m"; + return (1); + } + Zombie* horde = zombieHorde(N, "Zombie"); + for (int i = 0; i < N; i++) + { + horde[i].announce(); + } + delete[] horde; + return (0); +} \ No newline at end of file diff --git a/cpp01/ex01/main.o b/cpp01/ex01/main.o new file mode 100644 index 0000000000000000000000000000000000000000..41136266336b2a0f44692193df7677f42cd252b9 GIT binary patch literal 12824 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 LkuP`#z5M?HRp2Gt literal 0 HcmV?d00001 diff --git a/cpp01/ex01/zombieHorde.cpp b/cpp01/ex01/zombieHorde.cpp new file mode 100644 index 0000000..270f78b --- /dev/null +++ b/cpp01/ex01/zombieHorde.cpp @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* zombieHorde.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 15:05:45 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 15:17:10 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Zombie.hpp" + +Zombie* zombieHorde(int N, std::string name) +{ + Zombie *horde = new Zombie[N]; + + for(int i = 0; i < N; i++) + horde[i].setname(name); + + return (horde); +} \ No newline at end of file diff --git a/cpp01/ex01/zombieHorde.o b/cpp01/ex01/zombieHorde.o new file mode 100644 index 0000000000000000000000000000000000000000..d0b75e4f889375eb5854423265cdfcc4dcf6da0d GIT binary patch literal 4096 zcmbVOYitx%6uz_Dm&&6&j1o|5L{k(do!SV9F{Jna&RFgm$;torP^< z0khU*vR!OKjZI9{A0%M(2O6U!CR!=BXiV%M4e^Kg17l4^LySlaq@FW#?{*k=HE=d} z?mgc=8AxIUq?ykVKv(bDTg4X}-rZc81Ml30dsO-Ua;K(EeQb;6Lru{yDTW zv?J6WYKzg_Z@cV)A!=ui#%aFd(RvV~wt8L}%d10Fzd+AC=~9rcA3wB|+85{-KLx0S zU6AI+YG$hG{)j{H(4LfU6!JQ zm-}YIg-sx3tD}?Z2rAD!pI1kyK1J;**AI3MKk_+VPX_GEPMs?`{=r>Xq| zU3JzMLvFf0T3B5bUH_N00OGHY*nc?wW-dqV8@H3DiHQA+qv?2Z1H}NSJ?@PiQ_WNA zt}AzL*PhUep}nDfA+~p1R1ykUYY$wvGuLth*QLycmj|xR&JvPoq=ib%sIXCF&lX1$ zG=G!G@K;5vpP`Myfy++M-S(o;kwJb^R3P_pSiWeY*vsfkl0%(h^s9@K_?qGPb>mf z^5AG!P>@uKVX?1+Q2>6J6C`I%(6>TEypFqe)&dxVwis|hLhl3s4+rojaS2lB&=`EN zZho2opcMXH8GH%ES4w_Q8T|D!_=z(3`(^M?%i!;oiSwH>@|O^wOItA=SIWp&gKVkw zK2!!L{mGsV)1b*z+>rI&Ucz?AtjIdX%%qtxEnu4z#?qE%nL0zn)Vj@n;F1ZZCE_e@ zq^(p&clZX=By3A$+s04?R5Beb%-C*4@pv$|#;moB>DjEJD2*Lj8jOOzndl7bF-uYO zE-l5ZlxAA#u&%~5_^2w`v{OzQ`(?&Dvsu<_q|(U*1Yz~DgAEX0LhFI=)~9wm3u#f* zgUH^#AJE+XT&#(CjIB)@7MM5GJ20o-SrnUi{Cqi_jcct3VU_KPLnh>WyOGZH7{n=y zet_v+2iShi>~DV+q^lZwz0O*#)#^yIcD9g z>biznX-u<>EbIj&JjY0Q58~T@9bajnBM1T^j(-^hK7}9<;`5*h{33!th|h;6@EHVw z5MKaI;M-uoBO$&Jn!s%jj{9EVBOV;@Hi4h?;9mP5dT_7&CmwvU$IkB@$D@gFiLigw zBad%^z;Afu@Acq#UXlEE7IFM>n7a>}u(OQgn1}m4I1C*^Hz*?RUl+x@oxuOLITB-( zox6Prspleyb5{u1v|51n`4f_1L=&ks9!1HsB)V7-^ByNGmg4`eXNOp?*T+=_<>&STbMt8 TXt$Jp79VAxNw+J0{rdj`#D3Ha literal 0 HcmV?d00001 diff --git a/cpp01/ex02/.vscode/c_cpp_properties.json b/cpp01/ex02/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp01/ex02/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp01/ex02/.vscode/launch.json b/cpp01/ex02/.vscode/launch.json new file mode 100644 index 0000000..5b63206 --- /dev/null +++ b/cpp01/ex02/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex02", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex02/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp01/ex02/.vscode/settings.json b/cpp01/ex02/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp01/ex02/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp01/ex02/Makefile b/cpp01/ex02/Makefile new file mode 100644 index 0000000..ce12042 --- /dev/null +++ b/cpp01/ex02/Makefile @@ -0,0 +1,61 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/24 13:55:45 by fgras-ca #+# #+# # +# Updated: 2023/12/24 15:52:26 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = brain + +SRC = main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation brain... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./brain" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re diff --git a/cpp01/ex02/brain b/cpp01/ex02/brain new file mode 100755 index 0000000000000000000000000000000000000000..5d39098f317733ea6a9232e98d420592091e5df0 GIT binary patch literal 23672 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 literal 0 HcmV?d00001 diff --git a/cpp01/ex02/main.cpp b/cpp01/ex02/main.cpp new file mode 100644 index 0000000..e865fb3 --- /dev/null +++ b/cpp01/ex02/main.cpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 15:41:21 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 15:50:11 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +int main() +{ + std::string str = "HI THIS IS BRAIN"; + std::string *stringPTR = &str; + std::string &stringREF = str; + + std::cout << "Adresse de str : " << &str << std::endl; + std::cout << "Adresse contenue dans stringPTR : " << stringPTR << std::endl; + std::cout << "Adresse contenue dans stringREF : " << &stringREF << std::endl << std::endl; + + std::cout << "Valeur de str : " << str << std::endl; + std::cout << "Valeur pointée par stringPTR : " << *stringPTR << std::endl; + std::cout << "Valeur pointée par stringREF : " << stringREF << std::endl; + + return (0); +} \ No newline at end of file diff --git a/cpp01/ex02/main.o b/cpp01/ex02/main.o new file mode 100644 index 0000000000000000000000000000000000000000..adfd7236352e915fbfd0d3aea4e34adb6fdec12c GIT binary patch literal 12928 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 literal 0 HcmV?d00001 diff --git a/cpp01/ex03/.vscode/c_cpp_properties.json b/cpp01/ex03/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp01/ex03/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp01/ex03/.vscode/launch.json b/cpp01/ex03/.vscode/launch.json new file mode 100644 index 0000000..733ff17 --- /dev/null +++ b/cpp01/ex03/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex03", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex03/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp01/ex03/.vscode/settings.json b/cpp01/ex03/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp01/ex03/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp01/ex03/HumanA.cpp b/cpp01/ex03/HumanA.cpp new file mode 100644 index 0000000..6cbaf5c --- /dev/null +++ b/cpp01/ex03/HumanA.cpp @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* HumanA.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 17:25:06 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 17:47:18 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "HumanA.hpp" + +HumanA::HumanA(std::string name, Weapon &weapon) : _name(name), _weapon(weapon) {} + +void HumanA::attack(void) +{ + const std::string type = this->_weapon.getType(); + std::cout << this->_name << " attack with their " << type << std::endl; +} + +HumanA::~HumanA(void) {} \ No newline at end of file diff --git a/cpp01/ex03/HumanA.hpp b/cpp01/ex03/HumanA.hpp new file mode 100644 index 0000000..309e80a --- /dev/null +++ b/cpp01/ex03/HumanA.hpp @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* HumanA.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 16:13:39 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 18:01:21 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef HUMANA_HPP +# define HUMANA_HPP + +#include "Weapon.hpp" + +class HumanA +{ + public: + HumanA(std::string name, Weapon &weapon); + ~HumanA(void); + void attack(void); + + private: + std::string _name; + Weapon &_weapon; +}; + +#endif \ No newline at end of file diff --git a/cpp01/ex03/HumanA.o b/cpp01/ex03/HumanA.o new file mode 100644 index 0000000000000000000000000000000000000000..caf9a569c7e5e68bca61d4780282d6f7b6605994 GIT binary patch literal 4648 zcmbtXU1%It6u!HOP1XLywrZs|u3$CxXUN1Ptrbd|bdm{)ZOA5VDJ|E@>?9eo*;#jI z+f5-_t<)}|QV^uzi=arK#22B8)MBJHPd*4%d=f#4*ayW2gB0TVX71hGOm-CPS?=69 z-#y>C=brmF`>HX}lT0L-lmt7#mNkho*1UfCy)$_2WLwzg!1e*sAEff<#-_hV%*xN^ z`8z4IGP7t_O230pha%%x>0WFx7!PMpXImt{D)gEo|H6dEFG8aZ51NvUZCdPMaaenTy92X6%F~|rqA!1X8jpoYC-AZZk{LI}% z>4n#37MGS7E44<4BS%N0ua0VV#fTNJ*Wu#}Oy*Iu@K=$KdY-qfY>|Vd- zWilXDwk6IE4g}1GcVV?n@}D9F1#+7T`mFje&etX9m;JnfHj*dsko_E8ZvOx{$x%FH zd-BD=0C9W;oa8Y)Wcy&q2UJTi9rf%Fnwiy7hb+~Qx*&@y8`hDUP;hn6*0D7!jfGan z8dl-k2uadU7Y>5464o#9Hw7Myk+2g~HYsrib3_<&h53%kPXyGm-%WmjOFrfb(nDvp*&}b8s2vil zU8;YL!53rvH_}FIq_(JR2Ob4UZ;!#5S(>tP2Q@pNXZ%FkAK1sa>$y4CC$&xIyy#oL zYjYs3m37aO=Hd`o%umNL%zUjG>NWj+OUv6v+Reck9Mbf4Yr> zE#uJdIS%2eBRq+X)9lbOt>BDloR62wJns~WUXHTlPxI3)LC@h3_KrLL@O0kkY7bIC zJmk8~_DV=|+RxIk>4bO!s^C)MIHPtuFhg-Oj-phyj<1<5JPq*`7og0SiV|5os z4e$0a`EKWf{dRRqkM#7U4eIq^*MNbHQtVDHldTnWEsrAJj$kssdd`= zXnE6$A+J1B^!Nm=?=1OTZ4`D*E7{_f@04kqgz}82>#4@+cb9H#$e4m}Q1G&XtM(TJ zj;*~>v42ak$NrZ7uLvCWxT_`pzQ7UBLkj+hf~$T$7x+%9H!JqH6notH(*L&#j*l;i z{}qEL#d(K#9#QNY6r4U|s(yAVxaxmI;219*X;u4EiaqW`8Ba#B$DJ?noPw)8aeB(PMwv!uPFPRKw}O+kG+O*V(=wKCF>SP1WLm)s zm2unVPT6+yJ|`aSB03<+9v29=3I%Ig0I)`rmi25atNq(Ss@dMul#`?Wa-Q#K^gX(V zt|fa?=;OJPmM?g8`uftjGr`9S799)Pc)=^>#USsYLY}aXqS7eLLJwkY`MAKbOVNUpu7Nrws6x+-@f{mQl| zyqg-}Gmam%kLo&cfknq9`96a9y+VUgH{|C=UB6t7* literal 0 HcmV?d00001 diff --git a/cpp01/ex03/HumanB.cpp b/cpp01/ex03/HumanB.cpp new file mode 100644 index 0000000..9fa0304 --- /dev/null +++ b/cpp01/ex03/HumanB.cpp @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* HumanB.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 17:48:26 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 17:54:54 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "HumanB.hpp" + +HumanB::HumanB(std::string name) : _name(name) {} + +void HumanB::attack(void) +{ + const std::string type = this->_weapon->getType(); + std::cout << this->_name << " attacks with their " << type << std::endl; +} + +void HumanB::setWeapon(Weapon &weapon) +{ + this->_weapon = &weapon; +} + +HumanB::~HumanB(void) {} \ No newline at end of file diff --git a/cpp01/ex03/HumanB.hpp b/cpp01/ex03/HumanB.hpp new file mode 100644 index 0000000..a458a09 --- /dev/null +++ b/cpp01/ex03/HumanB.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* HumanB.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 16:18:38 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 17:58:53 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef HUMANB_HPP +# define HUMANB_HPP + +#include "Weapon.hpp" + +class HumanB +{ + public: + HumanB(std::string name); + ~HumanB(void); + void attack(void); + void setWeapon(Weapon &weapon); + + private: + std::string _name; + Weapon *_weapon; +}; + +#endif \ No newline at end of file diff --git a/cpp01/ex03/HumanB.o b/cpp01/ex03/HumanB.o new file mode 100644 index 0000000000000000000000000000000000000000..c0f213269ae829f1fe85fa22992d54fc99b5cafb GIT binary patch literal 4752 zcmbtXUu+ab7@un^ph78s6b)EU1%o1++ge({gp`&o+w_E{*Fr)h<92W9ZF;@E-0eY2 zQjEcvUK)}nB>JF_YK$?)H{k^vYe0O_Cm=p+Y@!dS4>YDp{eHVM*Xj0F6Z|f-GxPiY z&NqMWEhF9AkVr5|33i07^d!pI?534=SJ3QY+u622_A%-|PUWx7t$z=j)nClZzqgpx zsYSC|xo^%Gi{{MmeY1MUtlnCH=IrfxDVZTrlSHp&&6%b>dx>dQjRk#llVL&(nBv><`isikUV@$%GCqVn3?Q;W;X zj8)pA!vTwk~*O=UetINyFXXlfa?_2g*IeEeLb4fqvxTPdpUQRUc z+re1o$QKEAD-jq&vZ8dnr{{2T@9;>a;8&8muC;5a{dy(n>X+Kuv{d^`0uD5r=-WaC z_Ku$zW(|zZ0c)fJ+8$OcadD6(CR!3ZH?H3>OR?@E90l|;K1OrPyA3^?)>$M#UCB#a z97qS6>py_hPN~0}Iw+vKRN%8_!?@hoaC^nhJKzyLi;whkYK8w1aH2T=w;`LILM`2&gB&i|hiI`j|^lity(e zZ~}#dH33Q!UeA6m1~0|ncVh5nN_{>1yJK)3gBN4)&tmZFF?eT8oZpi?^436nP_TBX zUJ&^65&S_6zK%9(z45jJC!Hwmi;?e%!I@bZw+h{wT`V$wCgZ0Ma_)L=!S$)zu5(`Y zE#I{{5ZB7P7pdnJxK+sVtW)+&6+7ssT$l0V>66_@)1*=v;eDK+Infas?`bnmWc*If z?THCp*V{&{GFc>Lw=mjgXMA0^b5@D_CCl~8eYTOY=wlcZz(c6@=*D1wrkz7u`qv-Y zzp&5|p4i5DcI>oPa?WX-k4{YRqEjk+1_M zZM*GNkk*W!r(wp8dyp8fhAHwWM~*e#H^hfh+{kqD!T$J+(3mp^_>j(n%mqHyx-jZk zw};5~0Y1=g*QW4fZ*RsRuSdJn1~N&pJB4h%UeNU{ig-JMNyvElvN6y*nDH|FA?Ng% zjtmYLF1WPp2Ay(c++o4Ww8yxe8{_9JHy>m_TyKZUjvvm0G1w6{6z;LMU^?XD2yJ7f z9dx}ir^Gw$eYDtV9g$C-Eqgpit36L1*9wKow5}~~`OXAwnis@|Y@!;c;}YHYAbDN` zZ&vUewLww&^C29Z;G3x}?OYN#;lN4>pqDaDh4g#h;{n?uU ziKIN@0=Z!o;Oc8aT@Qhdi2GAT9=N=RzKh`Uov{$XYva<&ljFWM!ZbRg!a65gB`0rb zv>kk=Wi8)g+DN&~w2~KgMs1rr6Sh2tEaz37~HDp zq8Zg6APnbnH2%FpU*-$CAla8S_HDiV|A;^6L^99FKXjy?#4W-QQ)46nssHd#DgnJg z-@t!Ff1!?l+)GjaR|tdu6cv>Y3VWDem1O>8{T?x8Tb0X3;*q?l>?g#)zn-XgP5?=% zC~6tMgl|v-HlzB}5{NjA>R%__dh^G`#+@TR2=j;gSnA99tLGc?({e$H8tV{SGO7 +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/24 13:55:45 by fgras-ca #+# #+# # +# Updated: 2023/12/24 18:04:10 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = weapon + +SRC = Weapon.cpp \ + HumanB.cpp \ + HumanA.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation weapon... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./weapon" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re diff --git a/cpp01/ex03/Weapon.cpp b/cpp01/ex03/Weapon.cpp new file mode 100644 index 0000000..53323e5 --- /dev/null +++ b/cpp01/ex03/Weapon.cpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Weapon.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 17:16:10 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 17:24:34 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Weapon.hpp" + +const std::string &Weapon::getType(void) +{ + const std::string &type = this->_type; + return (type); +} + +void Weapon::setType(std::string type) +{ + this->_type = type; +} + +Weapon::Weapon(std::string type) +{ + this->_type = type; +} + +Weapon::~Weapon(void) {} \ No newline at end of file diff --git a/cpp01/ex03/Weapon.hpp b/cpp01/ex03/Weapon.hpp new file mode 100644 index 0000000..78b1e4f --- /dev/null +++ b/cpp01/ex03/Weapon.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Weapon.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 16:02:52 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 18:03:55 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef WEAPON_HPP +# define WEAPON_HPP + +#include +#include + +class Weapon +{ + public: + Weapon(std::string type); + ~Weapon(void); + const std::string &getType(void); + void setType(std::string type); + + private: + std::string _type; +}; + +#endif diff --git a/cpp01/ex03/Weapon.o b/cpp01/ex03/Weapon.o new file mode 100644 index 0000000000000000000000000000000000000000..7d708790ea13abdd48cdfd61824c451c47830e21 GIT binary patch literal 3960 zcmbtWU1%It6u!Gjf0X{jRZOLs4Z!dNhWknYc|_zAY3MsX|gogU3O>c zrVxJ!ic3%e_CXMR^1;`>h%eS+i>)s{iZ4P1g%$e{@gK|5hxn`}J zHLGfF(0gP0Mnkf4w~M43R@GmJ#9Ga+Th*Vf>a7}luKn21%vdXT4+M^?{+-ZSs1wXr zvv)MJzYfB`RlU)oSN(w%mMMY28Ou0yjk@(R+cvt{wwb-Z`A8T_yLhq-PfmxEmeMilh+NfpyRTJsQ45;_`$@RJsz~ zyLRkcqkNts90T+u9_F5|50XQ>x4%vb#6tEeaH1FRV7c9t15R8%n+`nh_zY|}`+tTQ z4A2w}%a^Afpk$jYJ29M5>iqzn{NeKU5MVv_q@es0Xkc&U^#Z1`E zgGboB+M9&CZljT-K2*|#tp%6~jpC`;Nfw||U!BwT=; zEf?fGHOT@cq1xii$VkSVl#{0h(`HcnsA=euTELdJ=T@i#iB71-@1!^G=uNtPK(>bO z*6_fH_^5tW)8C`%U(xWr8veD0>-xVb9G@iaCeG(iO&@m^0DI&T;4Z|r2?G?9y@pE<%N<>pQJHYD)>dUxc~9GPPUK4*bgX-_X>9k=I9#`zk6to z-iY4pX~IBsJm_&!GOf}W)T75;w*3{;844bf1S z=Xf8c0iW&cqi&*nifn-)H=Q^>*N +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/24 15:58:41 by fgras-ca #+# #+# */ +/* Updated: 2023/12/24 18:05:04 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Weapon.hpp" +#include "HumanA.hpp" +#include "HumanB.hpp" + +int main() +{ + { + Weapon club = Weapon("crude spiked club"); + HumanA bob("Bob", club); + bob.attack(); + club.setType("some other type of club"); + bob.attack(); + } + { + Weapon club = Weapon("crude spiked club"); + HumanB jim("Jim"); + jim.setWeapon(club); + jim.attack(); + club.setType("some other type of club"); + jim.attack(); + } + return (0); +} diff --git a/cpp01/ex03/main.o b/cpp01/ex03/main.o new file mode 100644 index 0000000000000000000000000000000000000000..49a86763cd068897a8c27b918b91cbc57cd40f62 GIT binary patch literal 14024 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 Qwd8l6>q$HlXbj5#2WS97EdT%j literal 0 HcmV?d00001 diff --git a/cpp01/ex03/weapon b/cpp01/ex03/weapon new file mode 100755 index 0000000000000000000000000000000000000000..fbdd57177a8857825fb9e94890c5aad58ab91b61 GIT binary patch literal 29464 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 Su4n{bp@jiukxjvdvi}CFMj2%Q literal 0 HcmV?d00001 diff --git a/cpp01/ex04/.vscode/c_cpp_properties.json b/cpp01/ex04/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp01/ex04/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp01/ex04/.vscode/launch.json b/cpp01/ex04/.vscode/launch.json new file mode 100644 index 0000000..f5ddda4 --- /dev/null +++ b/cpp01/ex04/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex04", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex04/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp01/ex04/.vscode/settings.json b/cpp01/ex04/.vscode/settings.json new file mode 100644 index 0000000..d355f64 --- /dev/null +++ b/cpp01/ex04/.vscode/settings.json @@ -0,0 +1,107 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "iostream": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/cpp01/ex04/Makefile b/cpp01/ex04/Makefile new file mode 100644 index 0000000..19eae88 --- /dev/null +++ b/cpp01/ex04/Makefile @@ -0,0 +1,61 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/24 13:55:45 by fgras-ca #+# #+# # +# Updated: 2023/12/27 14:52:31 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = replace + +SRC = main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation replace... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./replace" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re diff --git a/cpp01/ex04/main.cpp b/cpp01/ex04/main.cpp new file mode 100644 index 0000000..036af92 --- /dev/null +++ b/cpp01/ex04/main.cpp @@ -0,0 +1,65 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 14:20:39 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 14:55:50 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include + +int main(int argc, char **argv) +{ + if (argc != 4) + { + std::cerr << "\033[32m"; + std::cerr << "Usage: " << argv[0] << " " << std::endl; + std::cerr << "\033[0m"; + return (1); + } + + std::string filename = argv[1]; + std::string s1 = argv[2]; + std::string s2 = argv[3]; + + std::ifstream inputFile(filename); + if (!inputFile.is_open()) + { + std::cerr << "\031[33m"; + std::cerr << "Impossible d'ouvrir le fichier " << filename << std::endl; + std::cerr << "\033[0m"; + return (1); + } + + std::stringstream buffer; + buffer << inputFile.rdbuf(); + std::string content = buffer.str(); + inputFile.close(); + + size_t pos = 0; + while ((pos = content.find(s1, pos)) != std::string::npos) + { + content.replace(pos, s1.length(), s2); + pos += s2.length(); + } + + std::ofstream outputFile(filename + ".replace"); + if (!outputFile.is_open()) + { + std::cerr << "\033[33m"; + std::cerr << "Impossible de céer le fichier " << filename + ".replace" << std::endl; + std::cerr << "\033[30m"; + return (1); + } + + outputFile << content; + outputFile.close(); + + return (0); +} \ No newline at end of file diff --git a/cpp01/ex04/main.o b/cpp01/ex04/main.o new file mode 100644 index 0000000000000000000000000000000000000000..1e2252e7e85b7727d28d66f532bfebfae8014538 GIT binary patch literal 17152 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 G%l|*Om*#8$ literal 0 HcmV?d00001 diff --git a/cpp01/ex04/replace b/cpp01/ex04/replace new file mode 100755 index 0000000000000000000000000000000000000000..3c8c8129f48f34bcb22d01ec6791356f911c3709 GIT binary patch literal 29632 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 literal 0 HcmV?d00001 diff --git a/cpp01/ex04/test b/cpp01/ex04/test new file mode 100644 index 0000000..1392c20 --- /dev/null +++ b/cpp01/ex04/test @@ -0,0 +1,4 @@ +Bonjour les amis. +Les bons comptes font les bon amis +Les meilleurs amis sont ceux qui excitent à bien faire. +Avoir des amis, c'est être riche. \ No newline at end of file diff --git a/cpp01/ex04/test.replace b/cpp01/ex04/test.replace new file mode 100644 index 0000000..c574195 --- /dev/null +++ b/cpp01/ex04/test.replace @@ -0,0 +1,4 @@ +Bonjour les poulets. +Les bons comptes font les bon poulets +Les meilleurs poulets sont ceux qui excitent à bien faire. +Avoir des poulets, c'est être riche. \ No newline at end of file diff --git a/cpp01/ex04/test.txt.replace b/cpp01/ex04/test.txt.replace new file mode 100644 index 0000000..c574195 --- /dev/null +++ b/cpp01/ex04/test.txt.replace @@ -0,0 +1,4 @@ +Bonjour les poulets. +Les bons comptes font les bon poulets +Les meilleurs poulets sont ceux qui excitent à bien faire. +Avoir des poulets, c'est être riche. \ No newline at end of file diff --git a/cpp01/ex05/.vscode/c_cpp_properties.json b/cpp01/ex05/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp01/ex05/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp01/ex05/.vscode/launch.json b/cpp01/ex05/.vscode/launch.json new file mode 100644 index 0000000..94c96ae --- /dev/null +++ b/cpp01/ex05/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex05", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex05/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp01/ex05/.vscode/settings.json b/cpp01/ex05/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp01/ex05/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp01/ex05/Harl.cpp b/cpp01/ex05/Harl.cpp new file mode 100644 index 0000000..a79fde7 --- /dev/null +++ b/cpp01/ex05/Harl.cpp @@ -0,0 +1,52 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Harl.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 15:12:29 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 16:41:15 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Harl.hpp" + +Harl::Harl() {} + +void Harl::debug(void) +{ + std::cout << "[DEBUG]\nI love having extra bacon for my 7XL-double-cheese-triple-pickle-specialketchup burger.\nI really do!" << std::endl; +} + +void Harl::info(void) +{ + std::cout << "[INFO]\nI cannot believe adding extra bacon costs more money. You didn’t put enough bacon in my burger!\nIf you did, I wouldn’t be asking for more!" << std::endl; +} + +void Harl::warning(void) +{ + std::cout << "[WARNING]\nI think I deserve to have some extra bacon for free.\nI’ve been coming for years whereas you started working here since last month." << std::endl; +} + +void Harl::error(void) +{ + std::cout << "[ERROR]\nThis is unacceptable! I want to speak to the manager now." << std::endl; +} + +void Harl::complain(std::string level) +{ + void (Harl::*complaints[])(void) = {&Harl::debug, &Harl::info, &Harl::warning, &Harl::error}; + std::string levels[] = {"DEBUG", "INFO", "WARNING", "ERROR"}; + + for (int i = 0; i < 4; i++) + { + if (level == levels[i]) + { + (this->*complaints[i])(); + break; + } + } +} + +Harl::~Harl() {} diff --git a/cpp01/ex05/Harl.hpp b/cpp01/ex05/Harl.hpp new file mode 100644 index 0000000..bb76b64 --- /dev/null +++ b/cpp01/ex05/Harl.hpp @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Harl.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 15:08:34 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 15:11:58 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef HARL_HPP +# define HARL_HPP + +#include +#include + +class Harl +{ + public: + Harl(); + ~Harl(); + void complain(std::string level); + + private: + void debug(void); + void info(void); + void warning(void); + void error(void); +}; + +#endif \ No newline at end of file diff --git a/cpp01/ex05/Harl.o b/cpp01/ex05/Harl.o new file mode 100644 index 0000000000000000000000000000000000000000..b0ffc357d97d627bb69e8c9c376a5bcc3d7befc7 GIT binary patch literal 16360 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 +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/24 13:55:45 by fgras-ca #+# #+# # +# Updated: 2023/12/27 15:39:55 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = harl + +SRC = Harl.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation harl... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./harl" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re diff --git a/cpp01/ex05/harl b/cpp01/ex05/harl new file mode 100755 index 0000000000000000000000000000000000000000..50c8e0211c579cfaf9df5728ad6bcefbbf6fb03a GIT binary patch literal 28632 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 w{UY3lr*b|%+14LoE8j^@m5v+5k +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 15:34:03 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 15:38:28 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Harl.hpp" + +int main() +{ + Harl harl; + + std::cout << "Calling with DEBUG:" << std::endl; + harl.complain("DEBUG"); + + std::cout << "\nCalling with INFO:" << std::endl; + harl.complain("INFO"); + + std::cout << "\nCalling with WARNING:" << std::endl; + harl.complain("WARNING"); + + std::cout << "\nCalling with ERROR:" << std::endl; + harl.complain("ERROR"); + + return (0); +} \ No newline at end of file diff --git a/cpp01/ex05/main.o b/cpp01/ex05/main.o new file mode 100644 index 0000000000000000000000000000000000000000..6e04088fa8d20904a048d3d9feae17765ea47678 GIT binary patch literal 13312 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 nf*6QOCYjF0+ literal 0 HcmV?d00001 diff --git a/cpp01/ex06/.vscode/c_cpp_properties.json b/cpp01/ex06/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp01/ex06/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp01/ex06/.vscode/launch.json b/cpp01/ex06/.vscode/launch.json new file mode 100644 index 0000000..4181885 --- /dev/null +++ b/cpp01/ex06/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex06", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp01/ex06/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp01/ex06/.vscode/settings.json b/cpp01/ex06/.vscode/settings.json new file mode 100644 index 0000000..ebd8700 --- /dev/null +++ b/cpp01/ex06/.vscode/settings.json @@ -0,0 +1,105 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/cpp01/ex06/Harl.cpp b/cpp01/ex06/Harl.cpp new file mode 100644 index 0000000..c7b4da6 --- /dev/null +++ b/cpp01/ex06/Harl.cpp @@ -0,0 +1,65 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Harl.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 15:12:29 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 16:35:25 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Harl.hpp" + +Harl::Harl() {} + +void Harl::debug(void) +{ + std::cout << "[DEBUG]\nI love having extra bacon for my 7XL-double-cheese-triple-pickle-specialketchup burger.\nI really do!" << std::endl; +} + +void Harl::info(void) +{ + std::cout << "[INFO]\n I cannot believe adding extra bacon costs more money.\nYou didn’t put enough bacon in my burger! If you did, I wouldn’t be asking for more!" << std::endl; +} + +void Harl::warning(void) +{ + std::cout << "[WARNING]\n I think I deserve to have some extra bacon for free.\nI’ve been coming for years whereas you started working here since last month." << std::endl; +} + +void Harl::error(void) +{ + std::cout << "[ERROR]\nThis is unacceptable! I want to speak to the manager now." << std::endl; +} + +void Harl::complain(std::string level) +{ + void (Harl::*complaints[])(void) = {&Harl::debug, &Harl::info, &Harl::warning, &Harl::error}; + std::string levels[4] = {"DEBUG", "INFO", "WARNING", "ERROR"}; + + int i = 0; + while (levels[i] != level and i < 4) + i++; + + switch (i) + { + case 0: + (this->*complaints[0])(); + case 1: + (this->*complaints[1])(); + case 2: + (this->*complaints[2])(); + case 3: + { + (this->*complaints[3])(); + break; + } + default: + std::cout << "[ Probably complaining about insignifiant problems ]" << std::endl; + break; + } +} + +Harl::~Harl() {} diff --git a/cpp01/ex06/Harl.hpp b/cpp01/ex06/Harl.hpp new file mode 100644 index 0000000..bb76b64 --- /dev/null +++ b/cpp01/ex06/Harl.hpp @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Harl.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 15:08:34 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 15:11:58 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef HARL_HPP +# define HARL_HPP + +#include +#include + +class Harl +{ + public: + Harl(); + ~Harl(); + void complain(std::string level); + + private: + void debug(void); + void info(void); + void warning(void); + void error(void); +}; + +#endif \ No newline at end of file diff --git a/cpp01/ex06/Harl.o b/cpp01/ex06/Harl.o new file mode 100644 index 0000000000000000000000000000000000000000..421da45142312c2690a1d296bb35ca2f2efe09fd GIT binary patch literal 17632 zcmdT~4RBo5b$+Y0urXkX@KefP9>N9#_M(+#TgH$`wx7L=Wus`NK(Lj^)9Oju@oHDu zeQQe;^E0xDH?jt&ja!_g4Vl6WblMbVLTmmS1v}W#6ljwYb!t*WX=*AmR+^^OWIS=d zbKkwYXP@4K%B0ig+Pn9@@1DPV?!D*UcUBJ=tsARCAx)K#_9?CWq)<(JY*o44ESk;Q z8m&ptUW{krxdfj}W&5{KUnbjE$ofjuSIPF(s6Q#&I_hg=yAJiWvb`Af64|~E_4Ts7 z6!i_VeWR>zlJzoK-;BB*pP$!U{maf+@n2%a-81{U4(~5Lk9<%|SZur+R9dX~N~v}9 zq(H`KIOupQR&33Ar{_G$x}H zC3lS0o&n9#(aTT?k0_6g>TbuJmt<#CFz#&^kO|WG8HQE$VpUWA1xw2^1c6a2}eiIm!6rLKO))~&;fGM zn0Sgk8vE{v>R9OI*w`pd8LislkAy?^OgOb8FA;nAf%%7MH%?U_qUqW*QTVp(sM!-o zhkAJA4@wVJHGAFysoPUk^T_T}kLE0L(U9}`_j>_DGp&b_6QS7XgmWVvX)J=KSoM__3ux?s%it9}wXD40ORd1D6dV7; zHevbHgIN8dx#qC52)jX#75_;rj;WvQ-ya(@CVOHxxm&zu&kr!)@4t#K3Tg4;_dFYC zYGVK%3BWJ)$G42W=UjV;_IK=tNm{(|@hj)GuK8z=eLrn2o>bf36?Ei(Hmug-3B~8e zg@=w%WZTxVy`_ssdpG)%XmJ=I_!oDdE*54+cApLv);_d*hGJWx!Ru`m>R9-QjmZOJ z)}ioMB;z~SBihN|!-RB|PYXI{iiK%R!A#9xXtY<1X*8N%uKC>wMmF+6J&q(eqJTkl zPR2%dPilpQVi&)E5Mt$ic7|d{4H~63)fF4-JV9bbOxSYLZ60HX7UIJEL$Kz|)ZL(! z1TbKWWSd1x_D@A(BgRZfNLy=6<_-$YQ#Of-UEY%| zbf@j*$$s0;+smC?Y7kF@spJk+`9V9GveG+jC)r;Z)VmA0K06nI+?;Kt)5CgC_8M~C zw)obKcXTb(<9gD{WU`LlZKqQORu$`;a+uN%tpJ4l%r8pOl0ZFjb`Z;fw- zCqV4<9{JzC6o4`V_^a? zHhq_samX&X-P%D7rypLjG8Vk9XR^B@nwVIP+^xy6X+kE=0>-Pi<+9z7HcaLYrma+l zY___y@M%wnb6|bLe&QsXyaAY&n(d1sH%Q-f%fHa^*al+Z&W{D^(W_QPn>(3pj))! za@Z6Z3u%vs#6CaswI!j;we@k?Z zbQBT*K8Ru0A{G=T5P1%9vrfXSv94oKgKl{U z6~BweLv+$n5OB{JM5_tSxda^$p$@Cg2^{~ph>)8Q4iIxFTy23wl2!^JQ&*FzvEt!M zEt6$I#>vvzCC3M&W_&K>BFuJ*P|Knqd=)@DUUmtT&%nTG##d${A2q>8u&MASd~|G< zj|{->xDj(Ngs?YbYmH-wzBKsKWz4DZo-t#cgHA-@l<^FovzmoT-%X*rm9R_Nzp783BAk@J-B<1YoayIP? zkIbtYBBCpSe_hg0j;CbHma;7`%Kk;X-zfJVm;E?m%lw}y_n(&ipXL2kt^(43rQ9UH z&HLM2euDf84S$~YGm*LQ_J_qz^rEyEFPaSk372+fWp`L)zA7<#3Tu=Ft1Jug7-I6} z^a!G`CPr4tfTyq~Jm!N_W^Hx}mm)=FUs$88+w2n7^w}VguvQm<(+Zwl!Ww1iW|y!= zyK{C4Ym~j4UBVh=^JbT@y9+8h$YWKQ#|zGJVX=15j7vNzaphTCkV(*G5#N6%zUMQ< zZT=ip9h-L%dx2eqiK}DtenfJv0Z#GVTbc!Zc|C|23L;D3w7T6Q;t85x3XpRb`aZ!l zi1-EU%b@qe|48D>CZ+e!1LQv!fd4E2pN~DOWV<79zt;ue3E*VsR!OYvNlJX52j402 z*F5+aCB6W5QK6Vm<#piKR8jWVEp#?g`8VKxcK#ReI!zZe^rcSu+YoE~=x+yJhkvSw zxQvGb0rYPK;6Dz)|31LZQ=lim{faIQC~DqM2jJ(zA9Y$eK8SM+d{Kdy#M!=dV-2lA)Tz~ny z0`Ou0{x<>mKL+4a0r(9#!2HJB7l1!NIM%ec>! zdhFbWm1iqw{mOV^g=rXVo0ILE(Q>Wv>TF0mM*HSuq9LGvHDyt(oK0dtG@uRG1IYpM z8iwW-wkmCB`ka2EC4x1k*_SD}qput(Cxkn}M)a=ZqV9mj!^$4JyU-_qgwvQr4hM7z zC!LSaR&KNdTjBZ`2{t6A2I9#M(@3l|g*|ef?%237VRV=sE$dnh8Z+eDnVz)YeE3NO zXFX)Da^00p=Z&_F?TKu{G)g0AOl5krY!It=Svg8VF=(Zo%Vl#6Xi~{4<1AK;p>4P` zlCygw@b}P=IcVqd*$h^#Gi>gxC$q%DS}z?t_Z7K5>a&t)t!{8dCY+4z=RbEnceig2 z9+PlqM-L}zAK3cIu2&KCx3O>E%g4l~)m!|b(E>C)V6klRwME@}RU ztkVYj3u1Su-7{C)JbPKi1mQdN@Nomg*-vYO&$Q0nniWWvB3xN%v&V8QcTLZIja7OI zYqgC>t+Vhu%izYb{|#ejhnZ+H6HY@t(&N~YJ!ZH7funS4yf^Bpgt4z}w9<;Gsf>%4Dus3c|h{iq*5dRuXaB z5LRrSyOfd{XM6d;3c^nxgTrEp<8VvDtBKWT8JeRM8}hbe%6kDuh1-B-cH4ca3 zUa!R8K`H!JNq-}1dY4o9CW#aMbqu#8uJoqm^A3h{y?Kdy_1-ISuijBc&-H$T$*1wo zlkam+F`VmthRGpcsd0%Pj`8f(tKKuc<9(aSC%s>hdjFN-T<7`tQlCSd1q?g9~mZbXuqo*~d=-*{{ zgyFwrIG2AO2}V)!k4w5sB~JEm`AZni<=@J1E`N)}sUrK|k@D|i^jv-)!@2zX8P4TD zB5|rn{`*q?R~bE*{}jWy{P!46StaGq=g0vlO8$RH`G*-^hkix>*Al0Suk*i?xOct1 z&FK05a(|U}bNTg5{tDz#s1O^se{%qy48VUU0RJY#x!!LvJPO@vyps&)^gm%Zr=MbY z1CtX)UWW?#IgF2zzeeIT-Zq9eGy2ak{C0+OIUN!w|F<*x?M!}x;h#gB3hAYsva)BC zKol?jk_!u*vT=%@_Ba)yzX~6PuO<+MaLUptJVqc2;j8dbcprf%gmb@LCQuh|LR--{ zGJGw=;|!;>M$vC)IAy67&c};Cohad7W%O$p{shDMyg$cqZa?i2Dl{(25i7l90~NxX z@lm+S_!8d2a9Vp*2w#VfqVFUSh1M0thh@}2>2fPUzaDKxKgjS;GyL}%zJcLSGTdPJ z3k=`L@S_ah#PGKnPHRBfGtF?CJB2TjafrryJHsz$_-2NGlHsikzlq^n7`}?(d>+>_ zoX?}mFOxl6nH-8yRJ=I(mWmfAUMhs&fsYz5pD&K9dk)c4&R5Z+DGHfOQ?7m=a#8mW zdRC|h)VgdFEy+@)SvCl-Rv_woWSejqLIm<4!>Lb|$7F*r`qawj30W&#jsJuP-zT5d zUm_{`*Cejyk??YM9D7I3m!em{qtIUnQz86Z(Q?1i45vQzJH$SQFJ$z8%JB0T{(Xj@ z&+rczegVUO!Emx?sqDL$j6k7kk!ZPJjSR10cn8CkkEy$h;Uu48AC>zUexVDA@5dPa z35HKF{33>*V7U6*4$)1A5DInENBw@Od+^fwjO2$0@K<+Q1gTQD?pLjxowg!)>u|IP zy~b#f?tESoKt#N%c+Ox`@8;nZ~m@A;IAzy>yi2~b5j-4f-_|w_Up)8 zGkX;(6VCsKBwuMWvBmdcIWI;3>&@#issGE_J$DM|*EG}0<*Z@3_Gvd$S48BGBOmrF zMg%{Q4A>cjB>W|=9l@WvEk}wpxkEnVccuvbpcg-VI7+zPZ}#Ra{1_1F%Vi7dzC|(e z6V7I^$Ix#7}oID(Va)e!6EUK2-8p z-3ygJ)%){xz(~KmmZ9aA?ekTuvXBm1J?N{qS$?)>ui4NgEkN$f3G7*!ER0dg$_%gmdhq+{pOpHQ z9-2SOcX{>i4bXpD>OZU$%i61dBtZYP)c>U9BmFu)Uj6?Np#M8EaMAwe1>_awhXMK@ zm5hA+b>Q^szZnA}ncn?BCH1S{i^tpkJ3S>FV$Glzxy` z6#BbzKm8}9{s*PO|MB&^9DRyU;d`Y0Vb8*7`Uw3>-2+O$hkwD%E``!V^GA?Z|I<>x zTIWh`v(zt_p@K{PSAL}5c~rYZghpEObBx+v+E>9(N3F+vZBX*-#KelSUqSCk{a*h4 zlE29_v0nb;;KzThSqYT2ezV)yD+QDP8u3y5%C9sYuWsTzCX-($QbTLBtcN!ckUjF|EsF$$I literal 0 HcmV?d00001 diff --git a/cpp01/ex06/Makefile b/cpp01/ex06/Makefile new file mode 100644 index 0000000..0126eb8 --- /dev/null +++ b/cpp01/ex06/Makefile @@ -0,0 +1,62 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 16:19:19 by fgras-ca #+# #+# # +# Updated: 2023/12/27 16:20:59 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = harlFilter + +SRC = Harl.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation harlFilter... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./harlFilter" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp01/ex06/harlFilter b/cpp01/ex06/harlFilter new file mode 100755 index 0000000000000000000000000000000000000000..6d2b2770b3d8e763ab28b78231d032e8f55142a4 GIT binary patch literal 28880 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 16:05:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 16:08:43 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Harl.hpp" + +int main(int argc, char **argv) +{ + Harl harl; + + if (argc != 2) + { + std::cerr << "Usage: ./harlFilter " << std::endl; + return (1); + } + + std::string level = argv[1]; + harl.complain(level); + + return (0); +} \ No newline at end of file diff --git a/cpp01/ex06/main.o b/cpp01/ex06/main.o new file mode 100644 index 0000000000000000000000000000000000000000..c91be4c10a6ea9da87074309f7449e21b5dcfbde GIT binary patch literal 11952 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 EZ+sI~I{*Lx literal 0 HcmV?d00001 diff --git a/cpp02/ex00/.vscode/c_cpp_properties.json b/cpp02/ex00/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp02/ex00/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp02/ex00/.vscode/launch.json b/cpp02/ex00/.vscode/launch.json new file mode 100644 index 0000000..5a586e1 --- /dev/null +++ b/cpp02/ex00/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp02/ex00", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp02/ex00/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp02/ex00/.vscode/settings.json b/cpp02/ex00/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp02/ex00/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp02/ex00/Fixed.cpp b/cpp02/ex00/Fixed.cpp new file mode 100644 index 0000000..211e1cc --- /dev/null +++ b/cpp02/ex00/Fixed.cpp @@ -0,0 +1,50 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Fixed.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 19:02:33 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 19:23:02 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Fixed.hpp" + +Fixed::Fixed() : value(0) +{ + std::cout << "Default constructor called" << std::endl; +} + +Fixed::Fixed(const Fixed &other) +{ + std::cout << "Copy contructor called" << std::endl; + *this = other; +} + +Fixed &Fixed::operator=(const Fixed &other) +{ + std::cout << "Copy assignment called" << std::endl; + if (this != &other) + { + this->value = other.getRawBits(); + } + return (*this); +} + +Fixed::~Fixed() +{ + std::cout << "Destructor called" << std::endl; +} + +int Fixed::getRawBits(void) const +{ + std::cout << "getRawBits member function called" << std::endl; + return (this->value); +} + +void Fixed::setRawBits(int const raw) +{ + this->value = raw; +} \ No newline at end of file diff --git a/cpp02/ex00/Fixed.hpp b/cpp02/ex00/Fixed.hpp new file mode 100644 index 0000000..d63141a --- /dev/null +++ b/cpp02/ex00/Fixed.hpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Fixed.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 18:53:10 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 19:02:13 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FIXED_HPP +# define FIXED_HPP + +#include + +class Fixed +{ + public: + Fixed(); // Constructeur par défaut + Fixed(const Fixed &other); // Constructeur de recopie + Fixed & operator=(const Fixed &other); // Opérateur d'affectation + ~Fixed(); // Destructeur + + + int getRawBits(void) const; // Retourne la valeur brute + void setRawBits(int const raw); // Initialise la valeur brute + + private: + int value; // Valeur du nombre à virgule fixe + static const int fractionalBits = 8; // Nombre de bits de la partie fractionnaire +}; + +#endif \ No newline at end of file diff --git a/cpp02/ex00/Makefile b/cpp02/ex00/Makefile new file mode 100644 index 0000000..4714ffb --- /dev/null +++ b/cpp02/ex00/Makefile @@ -0,0 +1,62 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 19:17:28 by fgras-ca #+# #+# # +# Updated: 2023/12/27 19:18:51 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = fixed + +SRC = Fixed.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./fixed" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp02/ex00/main.cpp b/cpp02/ex00/main.cpp new file mode 100644 index 0000000..edff3f4 --- /dev/null +++ b/cpp02/ex00/main.cpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 19:12:29 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 19:21:28 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Fixed.hpp" + +int main() +{ + std::cout << "Création de l'objet a avec le constructeur par défaut." << std::endl; + Fixed a; + std::cout << "Valeur de a après création : " << a.getRawBits() << std::endl; + + std::cout << "\nCréation de l'objet b par copie de l'objet a." << std::endl; + Fixed b(a); + std::cout << "Valeur de b après la copie : " << b.getRawBits() << std::endl; + + std::cout << "\nAssignation de l'objet c à l'objet b." << std::endl; + Fixed c; + c = b; + std::cout << "Valeur de c après l'assignation : " << c.getRawBits() << std::endl << std::endl; + + return (0); +} diff --git a/cpp02/ex01/.vscode/c_cpp_properties.json b/cpp02/ex01/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp02/ex01/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp02/ex01/.vscode/launch.json b/cpp02/ex01/.vscode/launch.json new file mode 100644 index 0000000..5a7ff89 --- /dev/null +++ b/cpp02/ex01/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp02/ex01", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp02/ex01/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp02/ex01/.vscode/settings.json b/cpp02/ex01/.vscode/settings.json new file mode 100644 index 0000000..ae340aa --- /dev/null +++ b/cpp02/ex01/.vscode/settings.json @@ -0,0 +1,105 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "system_error": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/cpp02/ex01/Fixed.cpp b/cpp02/ex01/Fixed.cpp new file mode 100644 index 0000000..f323fe1 --- /dev/null +++ b/cpp02/ex01/Fixed.cpp @@ -0,0 +1,67 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Fixed.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 20:32:07 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 20:54:35 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Fixed.hpp" + +#define RESET "\033[0m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define CYAN "\033[36m" + +Fixed::Fixed() : value(0) +{ + std::cout << GREEN << "Default constructor called" << RESET << std::endl; +} + +Fixed::Fixed(const int intValue) : value(intValue << fractionalBits)//Ce décalage vers la gauche revient à multiplier l'entier par 2^fractionalBits, plaçant ainsi la virgule virtuellement après les 8 bits de droite. +{ + std::cout << CYAN << "Int constructor called" << RESET << std::endl; +} + +Fixed::Fixed(const float floatValue) : value(roundf(floatValue * (1 << fractionalBits)))//Vous multipliez le flottant par 2^fractionalBits pour décaler la virgule vers la droite de 8 positions, puis arrondissez le résultat à l'entier le plus proche pour ne pas perdre la précision. +{ + std::cout << CYAN << "Float constructor called" << RESET << std::endl; +} + +Fixed::Fixed(const Fixed &other) : value(other.value) +{ + std::cout << YELLOW << "Copy constructor called" << RESET << std::endl; +} + +Fixed &Fixed::operator=(const Fixed &other) +{ + std::cout << YELLOW << "Copy assignment operator called" << RESET << std::endl; + value = other.value; + return (*this); +} + +Fixed::~Fixed() +{ + std::cout << RED << "Destructor called" << RESET << std::endl; +} + +float Fixed::toFloat(void) const +{ + return ((float)value / (float)(1 << fractionalBits)); //Vous divisez la valeur entière représentant le nombre à virgule fixe par 2^fractionalBits. Cela décale la virgule virtuellement vers la gauche de 8 positions, vous donnant la valeur flottante originale. +} + +int Fixed::toInt(void) const +{ + return (value / (1 << fractionalBits)); // Convertit en entier +} + +std::ostream &operator<<(std::ostream &stream, const Fixed &fixed) +{ + stream << fixed.toFloat(); // Affiche en tant que flottant + return (stream); +} diff --git a/cpp02/ex01/Fixed.hpp b/cpp02/ex01/Fixed.hpp new file mode 100644 index 0000000..101a4d7 --- /dev/null +++ b/cpp02/ex01/Fixed.hpp @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Fixed.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 20:12:09 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 20:28:25 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FIXED_H +#define FIXED_H + +#include +#include // Pour roundf + +class Fixed +{ + public: + Fixed(); // Constructeur par défaut + Fixed(const int intValue); // Constructeur avec un entier + Fixed(const float floatValue); // Constructeur avec un flottant + Fixed(const Fixed &other); // Constructeur de recopie + Fixed &operator=(const Fixed &other); // Opérateur d'affectation + ~Fixed(); // Destructeur + + float toFloat(void) const; // Convertit en flottant + int toInt(void) const; // Convertit en entier + + private: + int value; // Valeur du nombre à virgule fixe + static const int fractionalBits = 8; // Nombre de bits de la partie fractionnaire +}; + +std::ostream &operator<<(std::ostream &stream, const Fixed &fixed); // Surcharge de l'opérateur d’insertion << ésentation en virgule flottante du nombre à virgule fixe dans le flux de sortie (objet output stream) + +#endif diff --git a/cpp02/ex01/Fixed.o b/cpp02/ex01/Fixed.o new file mode 100644 index 0000000000000000000000000000000000000000..429bc3d8e1056aea4fc66d52f56695253d95438f GIT binary patch literal 6624 zcmcgwYiu0V6~1eSB;~am9umO`ECE3pC4<*-LU;(4*z2r`lUUxQO(@4W6~=B|I38|Z6GBos?R-K!RRj4CyI&0;&Nn^|>@x>|EDh5ltw z=8`v@-TW$PKC(p`PRFi0Zv^TD7=$z z1-jF3oi;tTn&+l+=T6S9Y@I^qt&}j%A$%o{r%lgu$yK>?bIH^$eCTB7k_X-#Nj?Up zHlx#;OK$x8Hyl;I)jSI>&rYSjUdQHaXumw+U*(!FNd{Kd;yIB6ptZTG zdc5(;D8t|!M2|X+MtQVWErES+yi|9VxZj+?_{^}BI@YtW5b-A4(bIERdi}oPX3cM= zGa0Mf>fDrR>Tc$-t}d&y``ZL-|I6T+f`W6lWA{GQrqm2#?NCtowU{_Eq!JUUM91YT zR!)Q4H86$+rH+r>m8mD&dahXBRt82eb`RnpllTb7$HVc55C?f0AK~~)|-Ui6espI`S3IV7G(gPebPxL_o%%V9tv+>_r8-=e$oP6rQ>9HY(zdZ(5edUQ# z(Q?PfmHlABAJ}HwWv^T-`_S#q*mlEr{IY8!Qg$lkBhd3|wo@zGMS5przq4Fc_Ktx) z+wUI$mFBSBZ`%*<-lA>ybmb0f+ug3$M6(6I(&#VvnT$K;)NQ}+l>J7(o68LWwt3iT zfIAO92PLQ4@9wp8g)R2rPB%2ar?0P&+iUN=fBQhr4(yg{#Y(^X#VmqmC)nJIs=Etb zrI8!#8!C7OJBI*8oY4_;uPX=1i80yh%8jVH*Q^ysmQZA`D>t;WpxuSmmjX_~VD#dQ z^?ui?mqskx9-Wx5;iK8`YB2x)q>8>xAk`tl z(Tbh`9c;nhR`wb;On<4n9~QeuTegc0&mM!-u9P(0AO-Gicfzq9zcc}xMy;iNh+7lC zxfkFff^wU{@zgPXJK^|!!gn#_cM{Hautw<(D*Zi^{N02zpX0#yEQ)FWkVci-05x9z z*zY5RBmYW)|D15PzmEDR1TOP>iEz{JuLU3Hhu;@}j^PKtzwp}<%qQpd&lvvugqwMN zDEKn3OX0nP!uEd?bX5o882{B!cz!k-e4dA`0+;h}udpN6D=+vs5BHJZLJa?)!RL7x zi{X2OoAZF*2^4dEUohVvrg4+~h z;`?xb;vHNmyhF33sexQ9ELmzW&iB$o2F~}-V+PLm$rA?7_r|{pd^NSPnx!`T<@@Bv z0++uQmeF}+KHm>-F>t;g_8K_f4~quQzb}4l;Ng5)jmfI-3@Zz+P(eM$t$L~ASn!?p zl~r_nM_I#-hO+8j&>3}IyENgJ#(f*~;DZnM58&g?&vxo{XOaM9zhuGh?@e%@bRVJqXsv0D*YQ6BJ{vEM*&}tQ3eHF2S~X6S`z5M3L3dSz zewMJysYVX2H||>$uG7%Qsg`RCT{VCYkblsA4|+@YDqg2lq`Y)h(BpZ=`9~erW847@V`?`h;LPXv2Nf+3 z!BhJ;^k*XcjXeia&M)6~zB{t3gOss9Jijat9=X#Td5KCWL93hVRwMfnDrnx%7hh&C3Q`&NWL iV&>ihNM&)cK=v4k8R_VEPn3R&{_*&?z)biw_5TmO!Nx=Y literal 0 HcmV?d00001 diff --git a/cpp02/ex01/Makefile b/cpp02/ex01/Makefile new file mode 100644 index 0000000..2bbdcf2 --- /dev/null +++ b/cpp02/ex01/Makefile @@ -0,0 +1,62 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/27 20:58:29 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = fixed + +SRC = Fixed.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./fixed" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp02/ex01/fixed b/cpp02/ex01/fixed new file mode 100755 index 0000000000000000000000000000000000000000..dc01bc239590e52a1e94753f7071747e00e23684 GIT binary patch literal 17632 zcmeHP4{%(?dEb+KmQrj>HWoM*u@A7R|KPJ^%dTtUaJF>fWMm^taxf6{INhD3gVUXS z_YNe29fM1PB40-|+uTZwY0J&bNnwUIdd~K=f+(|VI0X+}8dLkbp5 z+20=MQCvQ5;%;u&{z~NQ(7O3c5QB09}BOGMdRs#bpu;AuiM<W<^_dL9EnQ`xd;T3y6Pcl?* z(jgg2WKVawEK{DQCdsIH+%5BZx{C40zx37IKd(^=7x}ps*rFnMa|yg1j*7{LOW;2$ zVP{(>cNyVGGSU-GnUQ4YuEtm*9_b8r#UhGVoOA8& zjzlcw?-qv6MUm?;8zS*=tR>W8*4Kx6gGs|o2BT)GCFJ+F1KZdYOhrRRB4s8c!M>JG zqqENNcWg!_V8q-KO{5G+L>gM+QM0Muf3s!0t+~A;(P8+h@&f}#e}WJLcsF=AiN<~Vw(n>$>b)Bkyl)>w8Z41~Zes&=dO7~h z!MrcW`cjU0UM?!|=Mt6pb0J3@m8kq6#tM(;wo3-j5s>>kJ${IPw~e1(8vPWlT2EX2 zGI59I*TLkEzH<|nv2ihBn#pS=A>%e& zH&F^s*l><3+6j0n zxAIDms^x;@dx*dSK*oJ5kw2UkB(nO$z|dsi#Lq4doR}#O zxLypL{Lows18!}gGIzRL#)8eY|ty(>aTSpa+XQc75Y}l&6cQp^;xXJ<#<-x54 z4%eJ36=kggK#J8WFqEEz%gNzt%kcqiC*y9E`eWI5KHzX%m-q3S1-kR#2?B>}zP{E9 z#}9!N=?CdI<7U;2`*o=@mi>}tc7ERMjTZO-ZVV|ZX!%~{%bWKVl8CJ_=;0zgfi6F( z&1Bq$_FG}OcslQ5>c6?+7v{l#BXGFpduyyVz5~SGMm@5JMR(PEqtjJu@K-(mW>}c6 zy8gue{Ft=lG9x+6fjdX50?(b8skBM(Jkh;G1N&Y~B#fHT!0_G~8aWh-HL^<7So?S% zI{3j*dgjQ%4_xWXZa+AagOBtEH2$D&awlnJ+$&{6XqJT~<3+3mE{Tn0-+aHIWzUk0 z@6%GA{Tix~uV@Em^r~=Rc+SdIG?|C|+4|8y#{Vi+SVlJEpLmv@RS4*%P-pya4A*=W z5Zdq@p|41E?*urf^;D8$JL7+AxF%u~{0k-cma;EL_n*;thalNmKubZ!eGW9#^f|a% zxm}62$kl|ZB}dRbYSnlbb=Dp)B$#w@3!-n5A5< zl^?T|-_XjnN;#QVepD%UTgop=-dHwnDI+Yh+O)!80B*`F->8(&x0Hvpa=lc3UWIBb zdj~Yh#!s`oY}NgKrD`jNQ8|IbHE;aB6_16=@C#ZdLu4577|X7<3|Co( zAITg3E0P|rIg&U06d@V+0n6~~l85Ya)_D9txJKPai(E|X!P*zb@GS|U!Zq|l6IpZ(=WFA?f~OWr?P zcZ?Lq*)$u0*$B)=U^W8(-y`7CyT-NGZQRf&nj+o7bj3KqEESWoqH zR!fM(jX_T|x?pvVapjpr@XLGrE z*!#Ev^it3}KwCkd0gZt!`b92x6m%`wc21zvUG)d}Uhuct^$+Cv zegm`E5#{AZi1}DFvA)v5z*#K!NMwKT=-)m*rBJ`s=e8 zLphACV!nv~1@JfFj;@riT+Su%x8`E($2GWzE5uIsFXxK=?l3#r;>#}g-_I3~ zxn7uq!Z#}Hua97THqAz0HUhH|n2o?}1ZE>J8-d@g2=I4G{9O`%hr}P_;5JSs`j(0k zm+9Lpdzrq~vX|*wDoXPdvA$2nD}3? z4|5619M>N+@y**YouOB*lqNKv_VX!C>-ymZhfM6RMwgjrHPL&yLU5}o(}bqAHEbG%wAOw^w)aE|JMeqYiwd#(93CC{qi5UHHznZM!N{{V37b)-G|rHGd?CpWE<9 zetG^geit$>ah^3F8GjU+V)cJQ%GZiL4!@(o$^PSdLdj=0V3Qi>^@ivFd{p?O?6;S& z|3htn?Vkrb6g{7onc7P{oi26cJwpUM-f2B|Z&kGK%r!0WKUkt;-8(FnE+8uLHC`7qd?Tmhhdl zQG_J-KtTUo%Wu~8k$W4!j|0Dm1RZImmajceG3Xhd(#sN8dHe4oESw9=mI~*5Tn?P- z)1((txhDd}I^Y*VzS^g(@VZI+PK(MG3ch}@k9KK?OL^K`0>4w@)nZip?bRw@D9}2_?K}&d#<}ouixhoX;G^ZuAG!Fv`wXpF>!QL3z&^1@N0m33M5q_T|)k73Hb+0 z;NLA_M|6aeX1zCo@A-pWQNs-O2mmQF-QDdCiTnWy!|XFcbc7-W$#BBxi6y#%F(Ztv z=adml4~S5ruRj(sBVl~eUsQrl7DSC;G8r5+uydUp6y3>SU&IKf`}zihG7QB3ic?Ml?Y}C^po~qX;HWU=R|e(+fc}inAa=oNWl}op37GMRA(riq@-k zY;T21y31%Wa6)5~wB5J?=Q8M&gK|U??!q)Gmys zYj$tn)zWDBxT?9i!;jM-+jq43;*%d#QD*d63v^y8Ve}$+bX10&2Rl@yo38dIBi-KO2Ue(uNkyHZ zaaeVnCb6oHlN^?pCh7&%M0L!>lA^;Q#B%ke|4tIF8Q0t=( zU=g$x`C`H&qg1GctC4=lR?fET}0ihXskAckKH7yv5X0AWhE}h3RS(@yaN{_2>Nq zrhFg4`v=bY2cb`U2dvNg3rt_4;382SDa-o&oF4^-TMz;Y?Imz|lq!nE^tdX@`cv$<{u&k;WC&+{-rr!#`y1?^^|}4` zY5g7AAn%tjozOVx(=(h?{}Esm6Si;N*XsLQ-baFnOwRs)2&i4(qxF~`Q)<>P-!?OS z)S*AB8BAG@4RD$1afkl6W-uLLMNL_c=|4F1`8k8>DGr!JpUr;Xq0i4#OnIM<<(={S zN3GBOFFaaO(@9-q;;4@JXD}%KtUu{dl1!<8?8)i>Ct%w3M=n&-OmAbu+KAKt+YbGC zE0iG94O)*0`Ld^9p|AjdG>0ki{w1Hs=W(vM`SHv3D2Kr+Fj=4XH+}1r2FsPwuYx{} zeb(oF2mb#RJi7gQT3hpn$IoNXr8coX?{D_5S03+I#QNp>FkJ#=yT0&g(K*liD+?)yF>%{D!d@EIXiU>5h)+g`XhQ_q5ZjH>ksYo jaoz2XCg{S3^kc_>Wxt9`&&tL1pSVm(T +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 20:46:29 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 21:06:18 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Fixed.hpp" + +int main(void) +{ + Fixed a; + Fixed const b(10); + Fixed const c(42.42f); + Fixed const d(b); + a = Fixed(1234.4321f); + + std::cout << "a is " << a << std::endl; + std::cout << "b is " << b << std::endl; + std::cout << "c is " << c << std::endl; + std::cout << "d is " << d << std::endl; + + std::cout << "a is " << a.toInt() << " as integer" << std::endl; + std::cout << "b is " << b.toInt() << " as integer" << std::endl; + std::cout << "c is " << c.toInt() << " as integer" << std::endl; + std::cout << "d is " << d.toInt() << " as integer" << std::endl; + + return (0); +} + +/*a) a is 1234.43 +a a été initialisé avec la valeur 1234.4321f (un flottant). +Lors de la conversion en virgule fixe, cette valeur est multipliée par 2^8 (256, car 8 bits sont utilisés pour la partie fractionnaire) et arrondie à l'entier le plus proche pour stocker sous forme entière. +Lors de la conversion pour l'affichage (.toFloat() utilisée dans la surcharge de l'opérateur <<), cette valeur entière est divisée par 256 pour la reconvertir en flottant. Le résultat est 1234.43 après l'arrondi pour l'affichage. +b) b is 10 +b a été initialisé avec la valeur entière 10. +Comme c'est un entier sans partie fractionnaire, sa représentation à virgule fixe est juste 10 * 256 = 2560. C'est la valeur stockée en interne. +Lors de la conversion pour l'affichage, 2560 est divisé par 256, ce qui redonne 10. Aucun arrondi n'est nécessaire car c'était une valeur entière pour commencer. +c) c is 42.4219 +c a été initialisé avec la valeur flottante 42.42f. +Lors de la conversion en virgule fixe, cette valeur est multipliée par 256 et arrondie. Cela peut entraîner une petite imprécision due à l'arrondi. +Lors de la conversion pour l'affichage, cette valeur arrondie est divisée par 256, résultant en 42.4219 après l'arrondi pour l'affichage. +d) d is 10 +d est une copie de b, donc il a exactement les mêmes valeurs internes que b. +Ainsi, tout comme b, d affiche 10 lorsqu'il est converti en flottant pour l'affichage. +Conversion en entiers : +Lorsque vous convertissez ces valeurs en entiers (toInt()), la partie fractionnaire est simplement supprimée (en divisant par 256). + +a as integer: 1234 provient de 1234.43 avec la partie fractionnaire supprimée. +b as integer: 10 est déjà un entier, donc pas de changement. +c as integer: 42 provient de 42.4219 avec la partie fractionnaire supprimée. +d as integer: Identique à b, donc 10.*/ \ No newline at end of file diff --git a/cpp02/ex01/main.o b/cpp02/ex01/main.o new file mode 100644 index 0000000000000000000000000000000000000000..9b32acc5e33cd9dd55aa28949459b14956cb3f36 GIT binary patch literal 6504 zcmcJTYitx%6vyv&=|kjEu|82;gCM>pT`UG4(F$zYLdDvpYE+y|XQ%Ck?M|~Zi!Bi! zA&Q#@V>B8?KbU}iP@^9-F=&ED@Rb-P@l_LyHNl9%4-ylDN>b1N&b_;5r#ose9x`+1 z{^p!>&pG$b?OpCq^>j7FVnRzyTra9UO@$b4t3G$i$4=2EPM5l~sedY6zs_IuM}NBf zLngib=VjUS#H=ODh^EV_BguEuJ5yhz%O4(rDLqf_gAoIVCeFaC!TE*vsPo}}Zq<*JekH1I(ASHk4As44hl zdZPbGHho!}{5bsaqeXl+=`yN!SjTd-xe6-*a#$IM!%FcvtbTRn%6qleHy!_Yzy40)x-(Kyj8);0dtBsMjE z-z2=oPnyKTvBo!>#LKY*v#7JDSq6alm?3Lduf8U+tbd?X@Joqg(&#YSuSk|;H+kRk z2w(NwFfdU4S_gCq6^`iB}pWUkb9 z(*-_T7Ea|z>~^{q5Z9vZHW9e60Z|1)rIj*Hcg$m0b`Yq?pN!zUBlsH;{QU_2c?AD9 zf}cT!trzE#2!3q@-x9%hMDSe^d`|>_J%VQ=@;VTqe+axfy<{E8PZ9bt(ydn?F=FKk zhCMne%sVoE&q~wGxw%5lr*22mG(F$)bG8YRv+}vE)N>1_RmhrI$McINTlU*?Ibp8t zxp~!%J!DcEFuP5-6>DxYiq4>6nnPn_=BQKj+yXiA$IUJ64@x3+s2u%;dva9rKF2GKI6}^fz1g&fH=Bc2 zE)V03zcS}~CS~Mwbkk%7MK!aYYYx+F<;iNMQcx|^9H65^$`;!><9Z21bjYS+W!-P zB;Z)@n(qQ6(f&2x6JW_tqi4-uQ5=32FusrR(;3G;2Dy|joXoYKgMcLPb0%Gye+@{Y z<3S7gK4@md^ONG?c>ZLZ$J0Rj03;mGT*brjv?;FR(SH{fG0y9=l=c|7+j9*zh5JS1G7M-|uc=y`maaURd}%ny&} zHO9}PakQVkjGxW;e&!$Fmp%u5%JjMaFBK2xHO2IKoqr7Z*X!^Y<2)_yV%V*&+BF8hmZRf<2;Xas*Kg71ppFEEZXy#C%_V*FgjClyCI z@Tm2tm_B~fX#OM9KcDeqjB`JKDvo(s#Ps7RFbSFq=+gedAo%PNlm49n1_56vpMo3q zScudO9_4+RdIra(C8-|3_^%;;9>6>O`{fa)4_=AK@Ww}cYd{!uoD14v{Zw@FmO%#` zUl>`-w}dg^dBP~VL1)OeO=rw@Mtzg)=%hqvR?^3j*R+a7Yg_?nuP#g&;B{3 zXmDet%TX_Nu(yZfKd9_=y|j()>lWv4sCH@v)&7D_nnc$b^@okN)7&D4_~W4hO#Z|8 zWFqA*y36rH_AP3I(BtU!7ao5n*<<{6>8*O3Qsal~4_%0EpJLDQg}TkbAFn#1?ewb` z=>h)>6AE9nD*J?1RIQF*WBg8l&#-;FvVUGHsy1xDmw3JTOQ`ydDLd2;zkjs7u4}!q rVRBICuND@T!zp#_!NO~gkT|FYnioneTtCEB&;Dr@|7UQ +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 20:32:07 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 21:41:52 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Fixed.hpp" + +#define RESET "\033[0m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define CYAN "\033[36m" +#define BLUE "\033[34m" + +// Constructeur par défaut +Fixed::Fixed() : value(0) +{ + std::cout << GREEN << "Default constructor called" << RESET << std::endl; +} + +// Constructeur avec un entier +Fixed::Fixed(const int intValue) : value(intValue << fractionalBits) +{ + std::cout << CYAN << "Int constructor called" << RESET << std::endl; +} + +// Constructeur avec un flottant +Fixed::Fixed(const float floatValue) : value(roundf(floatValue * (1 << fractionalBits))) +{ + std::cout << CYAN << "Float constructor called" << RESET << std::endl; +} + +// Constructeur de recopie +Fixed::Fixed(const Fixed &other) : value(other.value) +{ + std::cout << YELLOW << "Copy constructor called" << RESET << std::endl; +} + +// Opérateur d'affectation +Fixed &Fixed::operator=(const Fixed &other) +{ + std::cout << YELLOW << "Copy assignment operator called" << RESET << std::endl; + if (this != &other) + { + this->value = other.value; + } + return (*this); +} + +// Destructeur +Fixed::~Fixed() +{ + std::cout << RED << "Destructor called" << RESET << std::endl; +} + +// Conversion en flottant +float Fixed::toFloat(void) const +{ + return ((float)value / (float)(1 << fractionalBits)); +} + +// Conversion en entier +int Fixed::toInt(void) const +{ + return (value >> fractionalBits); +} + +// Opérateur de sortie +std::ostream &operator<<(std::ostream &stream, const Fixed &fixed) +{ + stream << fixed.toFloat(); + return (stream); +} + +// Opérateurs de comparaison +bool Fixed::operator>(const Fixed &other) const +{ + return (this->value > other.value); +} + +bool Fixed::operator<(const Fixed &other) const +{ + return (this->value < other.value); +} + +bool Fixed::operator<=(const Fixed &other) const +{ + return (this->value <= other.value); +} + +bool Fixed::operator>=(const Fixed &other) const +{ + return (this->value >= other.value); +} + +bool Fixed::operator==(const Fixed &other) const +{ + return (this->value == other.value); +} + +bool Fixed::operator!=(const Fixed &other) const +{ + return (this->value != other.value); +} + +// Opérateurs arithmétiques (exemple avec +, -, *, /) +Fixed Fixed::operator+(const Fixed &other) const +{ + return (Fixed(this->toFloat() + other.toFloat())); +} + +Fixed Fixed::operator-(const Fixed &other) const +{ + return (Fixed(this->toFloat() - other.toFloat())); +} + +Fixed Fixed::operator*(const Fixed &other) const +{ + return (Fixed(this->toFloat() * other.toFloat())); +} + +Fixed Fixed::operator/(const Fixed &other) const +{ + return (Fixed(this->toFloat() / other.toFloat())); +} + +// Opérateurs d'incrémentation et de décrémentation +Fixed Fixed::operator++() +{ + this->value++; + return (*this); +} + +Fixed Fixed::operator++(int) +{ + Fixed temp = *this; + ++(*this); + return (temp); +} + +Fixed Fixed::operator--() +{ + this->value--; + return (*this); +} + +Fixed Fixed::operator--(int) +{ + Fixed temp = *this; + --(*this); + return (temp); +} + +// Fonctions membres statiques min/max +Fixed &Fixed::min(Fixed &a, Fixed &b) +{ + return ((a < b) ? a : b); +} + +const Fixed &Fixed::min(const Fixed &a, const Fixed &b) +{ + return ((a < b) ? a : b); +} + +Fixed &Fixed::max(Fixed &a, Fixed &b) +{ + return ((a > b) ? a : b); +} + +const Fixed &Fixed::max(const Fixed &a, const Fixed &b) +{ + return ((a > b) ? a : b); +} diff --git a/cpp02/ex02/Fixed.hpp b/cpp02/ex02/Fixed.hpp new file mode 100644 index 0000000..5cbecd5 --- /dev/null +++ b/cpp02/ex02/Fixed.hpp @@ -0,0 +1,64 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Fixed.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 20:12:09 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 21:26:38 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FIXED_H +#define FIXED_H + +#include +#include // Pour roundf + +class Fixed +{ + public: + Fixed(); // Constructeur par défaut + Fixed(const int intValue); // Constructeur avec un entier + Fixed(const float floatValue); // Constructeur avec un flottant + Fixed(const Fixed &other); // Constructeur de recopie + Fixed &operator=(const Fixed &other); // Opérateur d'affectation + ~Fixed(); // Destructeur + + float toFloat(void) const; // Convertit en flottant + int toInt(void) const; // Convertit en entier + // Surcharge des opérateurs de comparaison + bool operator>(const Fixed &other) const; + bool operator<(const Fixed &other) const; + bool operator<=(const Fixed &other) const; + bool operator>=(const Fixed &other) const; + bool operator==(const Fixed &other) const; + bool operator!=(const Fixed &other) const; + + // Surcharge des opérateurs arithmétiques + Fixed operator+(const Fixed &other) const; + Fixed operator-(const Fixed &other) const; + Fixed operator*(const Fixed &other) const; + Fixed operator/(const Fixed &other) const; + + // Surcharge des opérateurs d'incrémentation et de décrémentation + Fixed operator++(); // Pré-incrémentation + Fixed operator++(int); // Post-incrémentation + Fixed operator--(int); + Fixed operator--(); + + // Fonctions membres statiques + static Fixed &min(Fixed &a, Fixed &b); + static const Fixed &min(const Fixed &a, const Fixed &b); + static Fixed &max(Fixed &a, Fixed &b); + static const Fixed &max(const Fixed &a, const Fixed &b); + + private: + int value; // Valeur du nombre à virgule fixe + static const int fractionalBits = 8; // Nombre de bits de la partie fractionnaire +}; + +std::ostream &operator<<(std::ostream &stream, const Fixed &fixed); // Surcharge de l'opérateur d’insertion << ésentation en virgule flottante du nombre à virgule fixe dans le flux de sortie (objet output stream) + +#endif diff --git a/cpp02/ex02/Fixed.o b/cpp02/ex02/Fixed.o new file mode 100644 index 0000000000000000000000000000000000000000..bb1261130c357b7967328321c20cb2a7d9e97baa GIT binary patch literal 10688 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 R>y6CQ7xk8V@y=%be*<6$70dtt literal 0 HcmV?d00001 diff --git a/cpp02/ex02/Makefile b/cpp02/ex02/Makefile new file mode 100644 index 0000000..2bbdcf2 --- /dev/null +++ b/cpp02/ex02/Makefile @@ -0,0 +1,62 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/27 20:58:29 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = fixed + +SRC = Fixed.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./fixed" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp02/ex02/fixed b/cpp02/ex02/fixed new file mode 100755 index 0000000000000000000000000000000000000000..9d50c9eb415ca2b961e67685d9cc4fb527515216 GIT binary patch literal 18344 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 21:42:40 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 21:43:55 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Fixed.hpp" + +int main(void) +{ + Fixed a; + Fixed const b( Fixed( 5.05f ) * Fixed( 2 ) ); + std::cout << a << std::endl; + std::cout << ++a << std::endl; + std::cout << a << std::endl; + std::cout << a++ << std::endl; + std::cout << a << std::endl; + std::cout << b << std::endl; + std::cout << Fixed::max( a, b ) << std::endl; +return (0); +} \ No newline at end of file diff --git a/cpp02/ex02/main.o b/cpp02/ex02/main.o new file mode 100644 index 0000000000000000000000000000000000000000..1398d1610c1bc21ada9854f0323ef494c4b456b3 GIT binary patch literal 5424 zcmbuBduSX*9LMJ_m!@iKYA(Zfr^byFWuP0)?A}S4eRFak{rE9yxXgn zKz-Fmj}WYg??1FH`1nJppi&iTX+f>xgMw1=fqz7ZD54fINHPAtvom+UjJMk2@3`HW z&-`BVo88&DH`db?4uyo4khosddYTH+)?90M$YzH)Rh%MqkEi|#^gq1loIm^R%J*@5 z%TKLIdm?f{D^a@=n~v_aCu4`~%KOtWrS{aGupFv_?3c#AzbgFxBaa6G${3>O!wGh zetmSl`>DcMm|7{0BBgiaR3>8-qq+>_!*5p(*%STKN&DhcO%h5RS%w34>I#=GTdi1E1S|%3Hp!V#K6pf{cwo~mY&z<%H|`L(#)34 zM?$4*@83K#J1azKx%n{ZXKP<|;5~a{&hxgd=5-Hzyo;A<`tjM>*@6ADv!N@`BklIa zt&QTw#@8dlZG1i=9t|x!91$OemK=zPze1N$drx@Dw-NDMcoVg^H%k8~Ipo=Aws**e zzO3%-yr!kKf3TGEN-fc-)o!(28ZF6g^q%F*t+w`y6qXhdy5d!a)73Zi3wjOrf;G?| za+ZG+q49M+eIitDZh8)6>Cy#F^S9Al&ZiFkkk`lb_ewjAT?bBb1}=Jhog4GH;2D@&c_Q|BLMf)2daBdh` z`9h_YGDcUnB`YcfUbK4ri2%McfWHyI_XqHg1Nb)q{BQubsNnVTUlG821NiL${H_3g zUjR=At7WaCtcARuRolASvZI3!m(R00Y z!U0LUne;gI@;S%NC7ood=oLx{*>6jyg|oV6?aCW^$fPvrbUSb>R^4h9QbU&G442E! zXsS@m=g5gS=4@&s|2JLHl`f}}ozd8)IX&{l#)i;aC1i;c8=b_+MrX)PXW%jJU7gMs9ZDkA-c6PFE94}Ld1r)5pCPM%D*2^w5@pwM zy;PZ2P>S9|v47(1bcDVTkSqLQxvwr@e1+n8w6F(g{WXfi&qBrr89$Nn9OH`^9}nPL z6-QjWmpbk?rhgLSPbt2P?x!%mLviGZZ-e%OeFg%)nEsk$pMjWhKk~8E=W!1zZpOv_ z12No9sW?%3#>Kt|G2?bAZpOWt z>GL`dFwW<@QE@YFk?HgKjw^1)eTeDvxQ_?;e~#&M|2qQwzsmHv|GkVap*rb$eyF%P zuY*jV$Nf@qb6!(SpU3^3abC|50+L|8IJW|LX8_+2z_S7TfdKwg0N=s*>6ELk+e?h& z%%b_{isObOjppAl{iTdgF@2orwEoYGb3ZeRqyA?zeSI)RJK(UGaK{MbeSJBACRD6UKH+Ap zfBUvuiF`Jj%2B*r-b-0@{=bwC5{ZqfKb$LBqlG*j2s{Kq)YOPGRB-8gXbl(grBOBc z|8e_(Z1LWi(xCvpc@XGeov`i@eQ%*Q*48|U_Yi}$;GtroUehYUGYVfFRpK|w>PX(9 z78~)gj`Nis-Vw-!^oLI)jL4V($|Pp|ONhazsjlr!eY20}5)8R<(e~GHNNv;JCWiBX z8UJMk^nA4&-PiX{8mL#l-Ec~x>xB9>(O=tXzMfdU{CBDNdYws4irIIG!oI;M!0!LZ z-}ffO9n_Hd8}^^o$sf<3ng1j)#BZZNm%S=J)|U%(A^QF#Ys&$3`AOMxhPJlT{6%V@ zu15Oe7iHg~71dqmukjvgz^7^7tP1^tR#bP>{w?CNeumz(s$W@gtUtbg+Fq}Jz1T3> rrQ%Pk#7-uLSJJcxt5>S0Q52G|jDi_mxv$i-zZ1!leCpq-SJVD)J;zEp literal 0 HcmV?d00001 diff --git a/cpp02/ex03/.vscode/c_cpp_properties.json b/cpp02/ex03/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp02/ex03/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp02/ex03/.vscode/launch.json b/cpp02/ex03/.vscode/launch.json new file mode 100644 index 0000000..dfaf23a --- /dev/null +++ b/cpp02/ex03/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp02/ex03", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp02/ex03/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp02/ex03/.vscode/settings.json b/cpp02/ex03/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp02/ex03/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp02/ex03/Fixed.cpp b/cpp02/ex03/Fixed.cpp new file mode 100644 index 0000000..e7e72fb --- /dev/null +++ b/cpp02/ex03/Fixed.cpp @@ -0,0 +1,171 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Fixed.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 20:32:07 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 22:42:03 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Fixed.hpp" + +#define RESET "\033[0m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define CYAN "\033[36m" +#define BLUE "\033[34m" + +// Constructeur par défaut +Fixed::Fixed() : value(0) +{ + std::cout << GREEN << "Default constructor called" << RESET << std::endl; +} + +// Constructeur avec un entier +Fixed::Fixed(const int intValue) : value(intValue << fractionalBits) +{ + std::cout << CYAN << "Int constructor called" << RESET << std::endl; +} + +// Constructeur avec un flottant +Fixed::Fixed(const float floatValue) : value(roundf(floatValue * (1 << fractionalBits))) {} + +// Constructeur de recopie +Fixed::Fixed(const Fixed &other) : value(other.value) {} + +// Opérateur d'affectation +Fixed &Fixed::operator=(const Fixed &other) +{ + std::cout << YELLOW << "Copy assignment operator called" << RESET << std::endl; + if (this != &other) + { + this->value = other.value; + } + return (*this); +} + +// Destructeur +Fixed::~Fixed() {} + +// Conversion en flottant +float Fixed::toFloat(void) const +{ + return ((float)value / (float)(1 << fractionalBits)); +} + +// Conversion en entier +int Fixed::toInt(void) const +{ + return (value >> fractionalBits); +} + +// Opérateur de sortie +std::ostream &operator<<(std::ostream &stream, const Fixed &fixed) +{ + stream << fixed.toFloat(); + return (stream); +} + +// Opérateurs de comparaison +bool Fixed::operator>(const Fixed &other) const +{ + return (this->value > other.value); +} + +bool Fixed::operator<(const Fixed &other) const +{ + return (this->value < other.value); +} + +bool Fixed::operator<=(const Fixed &other) const +{ + return (this->value <= other.value); +} + +bool Fixed::operator>=(const Fixed &other) const +{ + return (this->value >= other.value); +} + +bool Fixed::operator==(const Fixed &other) const +{ + return (this->value == other.value); +} + +bool Fixed::operator!=(const Fixed &other) const +{ + return (this->value != other.value); +} + +// Opérateurs arithmétiques (exemple avec +, -, *, /) +Fixed Fixed::operator+(const Fixed &other) const +{ + return (Fixed(this->toFloat() + other.toFloat())); +} + +Fixed Fixed::operator-(const Fixed &other) const +{ + return (Fixed(this->toFloat() - other.toFloat())); +} + +Fixed Fixed::operator*(const Fixed &other) const +{ + return (Fixed(this->toFloat() * other.toFloat())); +} + +Fixed Fixed::operator/(const Fixed &other) const +{ + return (Fixed(this->toFloat() / other.toFloat())); +} + +// Opérateurs d'incrémentation et de décrémentation +Fixed Fixed::operator++() +{ + this->value++; + return (*this); +} + +Fixed Fixed::operator++(int) +{ + Fixed temp = *this; + ++(*this); + return (temp); +} + +Fixed Fixed::operator--() +{ + this->value--; + return (*this); +} + +Fixed Fixed::operator--(int) +{ + Fixed temp = *this; + --(*this); + return (temp); +} + +// Fonctions membres statiques min/max +Fixed &Fixed::min(Fixed &a, Fixed &b) +{ + return ((a < b) ? a : b); +} + +const Fixed &Fixed::min(const Fixed &a, const Fixed &b) +{ + return ((a < b) ? a : b); +} + +Fixed &Fixed::max(Fixed &a, Fixed &b) +{ + return ((a > b) ? a : b); +} + +const Fixed &Fixed::max(const Fixed &a, const Fixed &b) +{ + return ((a > b) ? a : b); +} diff --git a/cpp02/ex03/Fixed.hpp b/cpp02/ex03/Fixed.hpp new file mode 100644 index 0000000..5cbecd5 --- /dev/null +++ b/cpp02/ex03/Fixed.hpp @@ -0,0 +1,64 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Fixed.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 20:12:09 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 21:26:38 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FIXED_H +#define FIXED_H + +#include +#include // Pour roundf + +class Fixed +{ + public: + Fixed(); // Constructeur par défaut + Fixed(const int intValue); // Constructeur avec un entier + Fixed(const float floatValue); // Constructeur avec un flottant + Fixed(const Fixed &other); // Constructeur de recopie + Fixed &operator=(const Fixed &other); // Opérateur d'affectation + ~Fixed(); // Destructeur + + float toFloat(void) const; // Convertit en flottant + int toInt(void) const; // Convertit en entier + // Surcharge des opérateurs de comparaison + bool operator>(const Fixed &other) const; + bool operator<(const Fixed &other) const; + bool operator<=(const Fixed &other) const; + bool operator>=(const Fixed &other) const; + bool operator==(const Fixed &other) const; + bool operator!=(const Fixed &other) const; + + // Surcharge des opérateurs arithmétiques + Fixed operator+(const Fixed &other) const; + Fixed operator-(const Fixed &other) const; + Fixed operator*(const Fixed &other) const; + Fixed operator/(const Fixed &other) const; + + // Surcharge des opérateurs d'incrémentation et de décrémentation + Fixed operator++(); // Pré-incrémentation + Fixed operator++(int); // Post-incrémentation + Fixed operator--(int); + Fixed operator--(); + + // Fonctions membres statiques + static Fixed &min(Fixed &a, Fixed &b); + static const Fixed &min(const Fixed &a, const Fixed &b); + static Fixed &max(Fixed &a, Fixed &b); + static const Fixed &max(const Fixed &a, const Fixed &b); + + private: + int value; // Valeur du nombre à virgule fixe + static const int fractionalBits = 8; // Nombre de bits de la partie fractionnaire +}; + +std::ostream &operator<<(std::ostream &stream, const Fixed &fixed); // Surcharge de l'opérateur d’insertion << ésentation en virgule flottante du nombre à virgule fixe dans le flux de sortie (objet output stream) + +#endif diff --git a/cpp02/ex03/Fixed.o b/cpp02/ex03/Fixed.o new file mode 100644 index 0000000000000000000000000000000000000000..18e68da13bf404c17918ea228b4c00d1c5eb3664 GIT binary patch literal 8824 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 E1!En3SO5S3 literal 0 HcmV?d00001 diff --git a/cpp02/ex03/Makefile b/cpp02/ex03/Makefile new file mode 100644 index 0000000..a5e8e54 --- /dev/null +++ b/cpp02/ex03/Makefile @@ -0,0 +1,64 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/27 22:09:54 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = bsp + +SRC = Fixed.cpp \ + bsp.cpp \ + Point.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./bsp" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp02/ex03/Point.cpp b/cpp02/ex03/Point.cpp new file mode 100644 index 0000000..a1f512c --- /dev/null +++ b/cpp02/ex03/Point.cpp @@ -0,0 +1,63 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Point.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 22:06:12 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 22:38:12 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Point.hpp" + +// Définitions de couleur pour les logs +#define RESET "\033[0m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define CYAN "\033[36m" + +// Constructeur par défaut +Point::Point() : x(0), y(0) +{ + std::cout << GREEN << "Default constructor called (Point):\n x(0), y(0)" << RESET << std::endl; +} + +// Constructeur qui initialise x et y avec des flottants +Point::Point(float const xVal, float const yVal) : x(xVal), y(yVal) +{ + std::cout << CYAN << "Float constructor called (Point):\n x(" << xVal << "), y(" << yVal << ")" << RESET << std::endl; +} + +// Constructeur de recopie +Point::Point(Point const &other) : x(other.getX()), y(other.getY()) +{ + std::cout << YELLOW << "Copy constructor called (Point):\n x(" << other.getX() << "), y(" << other.getY() << ")" << RESET << std::endl; +} + +// Opérateur d'affectation +Point &Point::operator=(Point const &other) +{ + // Comme x et y sont constants, ils ne peuvent être réaffectés. + std::cout << RED << "Attempt to use copy assignment operator on Point, which is not allowed due to const members." << RESET << std::endl; + return (*this); // Retourne une référence à l'instance actuelle +} + +// Destructeur +Point::~Point() +{ + std::cout << RED << "Destructor called (Point):\n x(" << this->x << "), y(" << this->y << ")" << RESET << std::endl; +} + +// Getters pour accéder aux coordonnées x et y +Fixed Point::getX() const +{ + return (this->x); +} + +Fixed Point::getY() const +{ + return (this->y); +} diff --git a/cpp02/ex03/Point.hpp b/cpp02/ex03/Point.hpp new file mode 100644 index 0000000..23af4d4 --- /dev/null +++ b/cpp02/ex03/Point.hpp @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Point.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 21:52:45 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 22:23:40 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef POINT_HPP +#define POINT_HPP + +#include "Fixed.hpp" + +class Point +{ + public: + Point(); // Constructeur par défaut + Point(float const x, float const y); // Constructeur avec deux flottants + Point(Point const &other); // Constructeur de recopie + Point &operator=(Point const &other); // Opérateur d'affectation + ~Point(); // Destructeur + + // Getters pour accéder aux coordonnées x et y + Fixed getX() const; + Fixed getY() const; + + private: + Fixed const x; // Coordonnée x du point + Fixed const y; // Coordonnée y du point +}; + +#endif diff --git a/cpp02/ex03/Point.o b/cpp02/ex03/Point.o new file mode 100644 index 0000000000000000000000000000000000000000..9c1ce6a83b67dcabe868affc0415dea22a83fd5b GIT binary patch literal 8144 zcmcIpeT-CB6~8kJrBc2MSX-g(Sb;7ThM8q46|`ZyJIk!Qz-EUnf~}9Yvu}4sX6J2Y z-oQZI+Pc*`*-)t@v`If~O|1PxlO`sO7_D12RtXqM6eKZGnqabp{!vpk#H?A*@4kCy z&fc8|sPSy>d++}4@0@$?Ip@BQ*{>zK+QXrc&=L|4i&{^kLY(_#?RuNM+$NTbWs*Ce z`nOU0Xz@M&>`hkwl1h$#aA&eIGMOApOuh|rvhu4*c_tt^IzDG6cyzAMc{i!A6uWY& zioBbw{J}R-7aaSzZ{mWU>FQ>9ldMd@2TWNVn8ydSUzLk`JURCGwbK*FX07F;#kVIe z(_zOYSRCuUJg_)_s-{Gf9POSnmbgUlc-2?Eo||3SSOR8i`gPY@Ib}{0K&unH|7)BY zDd!Z&(z*WR*qqgkGVh7W_&5dZVsfnaT(VM4kAx^-bSAi#-2X6O6Un0q%EwI8fMD{^ z*Qpn(i=&Clvo$Z@ShHSD&I+rvu8T`L)`zT0boBrC?MKVxyQn&!p5bOU1nlto2�@WK3$M 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 x0D52P4E&kp=2G~cCaAJqLY%B$E@J0U +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 21:59:43 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 22:22:35 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "bsp.hpp" + +float sign(Point p1, Point p2, Point p3) +{ + Fixed result = (p1.getX() - p3.getX()) * (p2.getY() - p3.getY()) - (p2.getX() - p3.getX()) * (p1.getY() - p3.getY()); + return (result.toFloat()); // Convertit le résultat Fixed en float +} + +bool bsp(Point const a, Point const b, Point const c, Point const point) +{ + float d1, d2, d3; + bool has_neg, has_pos; + + d1 = sign(point, a, b); + d2 = sign(point, b, c); + d3 = sign(point, c, a); + + has_neg = (d1 < 0) || (d2 < 0) || (d3 < 0); + has_pos = (d1 > 0) || (d2 > 0) || (d3 > 0); + + return (!(has_neg && has_pos)); +} diff --git a/cpp02/ex03/bsp.hpp b/cpp02/ex03/bsp.hpp new file mode 100644 index 0000000..75c2c5c --- /dev/null +++ b/cpp02/ex03/bsp.hpp @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* bsp.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 22:15:54 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 22:17:48 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef BSP_HPP +# define BSP_HPP + +#include "Point.hpp" + +float sign(Point p1, Point p2, Point p3); +bool bsp(Point const a, Point const b, Point const c, Point const point); + +#endif diff --git a/cpp02/ex03/bsp.o b/cpp02/ex03/bsp.o new file mode 100644 index 0000000000000000000000000000000000000000..e71ff934dd2702464fbba12882136888ed9c3c0b GIT binary patch literal 7224 zcmd6rdu$v>8Ng@nZq6lXa~C&2AuTcrg_P2bFLh`X5TtR}*-*Q&;v7jMMceb;**?X- zv+nldOC^^EJH;o6}>MKC@G#&fmCuLB0Z9WU16%5tA4 zm;0OnV@SW_WUcY><;GKhd{1)%jE{ryRITwWVDQ^ZY-qC zo84s*8QlYG?u`!k!8K%-r$OI)(l;Bb(0gPGy=SM;D*}aHH7NATLZMe53cW&6=v9nD zuXGf8HKfohCWT&ADXf;a?2T6|?g7xrikdIAtUR8`B}TJtXUwro%2zDn7EHIB;OYVn={xK{+&HOJh3 z)v24!m4t>Z_K`y4Bl?~iv$>Mca~~yiPvqT7WP>p?v_`aMhgOKz+`)zu_&$DvJ59UBJ5(Pxg{3*^x1N>3W9trRf&YlkNcS7uU z0siL@J0IXPAvPJ}i(&RocpYO9WBV3}(ZT-_f*5}au_69Kh&`tPo7MO;oV}{?$2ogn z<3~7~3ILuC@PBdka)7_a+1mkrmb3f$_b~0{vc0u+OVj#zcQI=hn_@A&MQ^?(R&=_t z`!;UWn_F%Y*s%@4Zxk*F!nWTPX9314$bxX8T<_kPc5i3GYd3 z8D?#7-?{Dfb}%V+TRSW;FJyYNn>xXp-DP!I?2bKpKHZ~RR&S|f4W{#jToydqhpdCm z5bUlyUDcM}w0*a6&?Rk|QaUw|F?QVv_O&{DYjyfPolTC>9kH76+w5Fhe=cDojAw^3 zkpHf9p*WCc&LbudSjoNvR!<_+4`FVFid6GE(PyX@L>giSiyg);3pOQj|%>G1^IL z@GT0yQ^8XTo+BLJ|8hNln{ZnH3BsxV!-TIUeqJFQ&q~t&KNb8#1z&@O0l^!d8Kj>t z5dLw(Z&mQGEBG$LX`X2XFDdv#gws5a5>E4cTETy*;AaV^d0tTPMFn4h2WSu+rg`2# zIL-4W1>dCL3kv?Bf;WnDCFVop-at5AZ_R{LeM7c2!d^*^EDM-}`j!m0mX z5Ki~Y1;Oz(fm=bY^97>+3Bunc`uJa~QvUs+fRa{~kEEX2v??6eNwv$w#BI(b0!d$UD-FrS0N zuq~aZ`>dXP0uH8nZ$4KX6c2X=w+h(e`t!?H0r0Gc5`_!r6W0fdyf;A`*ML}V&~in7 zJKrqUmE_`hAiHcWw9wa9kGPHd@h}Fm7hg^w7$4_Vbe-=}doI( z_>u=X=H8t7!*wF +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/27 22:11:13 by fgras-ca #+# #+# */ +/* Updated: 2023/12/27 22:42:40 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Point.hpp" +#include "bsp.hpp" + +// Fonction pour demander un point à l'utilisateur +Point demanderPoint(const std::string &nomPoint) +{ + float x, y; + std::cout << "Entrez la coordonnée x de " << nomPoint << ": "; + std::cin >> x; + std::cout << "Entrez la coordonnée y de " << nomPoint << ": "; + std::cin >> y; + return (Point(x, y)); +} + +int main() +{ + // Test fixe : Créer un triangle et un point, puis tester avec la fonction bsp + Point a(0.0f, 0.0f); + Point b(1.0f, 0.0f); + Point c(0.5f, 1.0f); + Point pointFixe(0.5f, 0.5f); + + std::cout << "Test fixe:" << std::endl; + std::cout << "Point à l'intérieur du triangle (0.5, 0.5) : \n" << (bsp(a, b, c, pointFixe) ? "Oui" : "Non") << std::endl; + + // Test dynamique : Demander à l'utilisateur de saisir les points + std::cout << "\nTest dynamique:" << std::endl; + Point aUser = demanderPoint("A"); + Point bUser = demanderPoint("B"); + Point cUser = demanderPoint("C"); + Point pointUser = demanderPoint("Point à tester"); + + // Afficher si le point est à l'intérieur du triangle ou non + std::cout << "Le point est à l'intérieur du triangle : " << (bsp(aUser, bUser, cUser, pointUser) ? "Oui" : "Non") << std::endl; + + return (0); +} diff --git a/cpp02/ex03/main.o b/cpp02/ex03/main.o new file mode 100644 index 0000000000000000000000000000000000000000..33d8c01451fba52b3451c5594e3b65f0cecdf654 GIT binary patch literal 16736 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 literal 0 HcmV?d00001 diff --git a/cpp03/ex00/.vscode/c_cpp_properties.json b/cpp03/ex00/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp03/ex00/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp03/ex00/.vscode/launch.json b/cpp03/ex00/.vscode/launch.json new file mode 100644 index 0000000..3c5a244 --- /dev/null +++ b/cpp03/ex00/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp03/ex00", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp03/ex00/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp03/ex00/.vscode/settings.json b/cpp03/ex00/.vscode/settings.json new file mode 100644 index 0000000..ebd8700 --- /dev/null +++ b/cpp03/ex00/.vscode/settings.json @@ -0,0 +1,105 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/cpp03/ex00/ClapTrap.cpp b/cpp03/ex00/ClapTrap.cpp new file mode 100644 index 0000000..43b37d7 --- /dev/null +++ b/cpp03/ex00/ClapTrap.cpp @@ -0,0 +1,114 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 13:59:36 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:29:13 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +ClapTrap::ClapTrap():Name(""), HitPoints(10), EnergyPoints(10), AttackDamage(0) {} + +ClapTrap::ClapTrap(std::string name) : Name(name), HitPoints(10), EnergyPoints(10), AttackDamage(0) +{ + std::cout << GREEN << "ClapTrap " << this->Name << " is created!\n" << RESET << std::endl; +} + +ClapTrap::ClapTrap(const ClapTrap ©) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for ClapTrap " << this->Name << RESET << std::endl; + return; +} + +ClapTrap &ClapTrap::operator = (const ClapTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for ClapTrap " << this->Name << RESET << std::endl; + return (*this); +} + +ClapTrap::~ClapTrap() +{ + std::cout << RED << "\nClapTrap " << this->Name << " is detroyed!" << RESET << std::endl; +} + +void ClapTrap::attack(const std::string& target) +{ + if (EnergyPoints > 0 && HitPoints > 0) + { + std::cout << MAGENTA << "ClapTrap " << Name << " attacks " << target << ", causing " << AttackDamage << " points of damage!" << RESET << std::endl; + EnergyPoints--; + } + else + { + std::cout << "ClapTrap " << Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void ClapTrap::takeDamage(unsigned int amount) +{ + if (HitPoints > amount) + { + HitPoints -= amount; + std::cout << RED << "ClapTrap " << Name << " takes " << amount << " points of damage!" << RESET << std::endl; + } + else + { + HitPoints = 0; + std::cout << "ClapTrap " << Name << " is out of hit points and can't take more damage!" << std::endl; + } +} + +void ClapTrap::beRepaired(unsigned int amount) +{ + if (EnergyPoints > 0 && HitPoints > 0) + { + HitPoints += amount; + EnergyPoints--; + std::cout << BLUE << "ClapTrap " << Name << " repairs itself, recovering " << amount << " hit points!" << RESET << std::endl; + } + else + { + std::cout << "ClapTrap " << Name << " has no energy or hit points to repair itself!" << std::endl; + } +} + +std::string ClapTrap::getName() const +{ + return (this->Name); +} + +unsigned int ClapTrap::getHitPoints() const +{ + return (this->HitPoints); +} + +unsigned int ClapTrap::getEnergyPoints() const +{ + return (this->EnergyPoints); +} + +unsigned int ClapTrap::getAttackDamage() const +{ + return (this->AttackDamage); +} + +void ClapTrap::printStats() const +{ + std::cout << GREEN << "\nStatistiques pour " << Name << ":" << RESET << std::endl; + std::cout << "Points de vie: " << HitPoints << std::endl; + std::cout << "Points d'énergie: " << EnergyPoints << std::endl; + std::cout << "Dégâts d'attaque: " << AttackDamage << std::endl; +} diff --git a/cpp03/ex00/ClapTrap.hpp b/cpp03/ex00/ClapTrap.hpp new file mode 100644 index 0000000..a81f8cb --- /dev/null +++ b/cpp03/ex00/ClapTrap.hpp @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 13:53:03 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:11:24 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CLAPTRAP_HPP +#define CLAPTRAP_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class ClapTrap +{ + private: + std::string Name; + unsigned int HitPoints; + unsigned int EnergyPoints; + unsigned int AttackDamage; + + public: + ClapTrap(); + ClapTrap(std::string name); + ClapTrap(const ClapTrap ©); + ClapTrap & operator = (const ClapTrap &operator_aff); + ~ClapTrap(); + + void attack(const std::string& target); + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + + std::string getName() const; + unsigned int getHitPoints() const; + unsigned int getEnergyPoints() const; + unsigned int getAttackDamage() const; + void printStats() const; +}; + +#endif \ No newline at end of file diff --git a/cpp03/ex00/ClapTrap.o b/cpp03/ex00/ClapTrap.o new file mode 100644 index 0000000000000000000000000000000000000000..052d8076fd730d926990d84088a657c5be051b7e GIT binary patch literal 20176 zcmd5@4U|;ndH!Zs{2>Tylm^A=RD z6=RAfu3K7?YC;oiO*N;Q9CLbVv7}l>X#ks(mi$yn8ylO}gdRMVp4gK;21B3syYGAF zojY@ZUE?`@&$)B&eZKeq`@P@2^OqYi*k%^nxmbVV~ z=iwl^3-~-0=ilM$kKsIxuP?;;BEFuE^TmAqahxyV>r46U@OcKG8*rY9S{lBZ-Q@lWc}!?`*!FYO+${3q=tvyB>vRM+BcO01eL8~%SmsxD`WoWSLdk@6Sn=xF0YvMJ1kHyS$d`HOSIe2)wJw6gM zPZA2Qug;8Jv@T=J{@8@i)x_Q*^iOIgK2c+K*Wi*Gxuu{-snz9_=jzauk4<^bw7xRs zk-h8p1y5F3BQ>ETls#CD;=$@b@)&75Iw7?!c`UX+`3{y$YY&r>6lS39$#>MUX4|pY z1AB*FvxOsTNAa9;fqh2f=M?mtz$Y0o?aUc;*Pxu9^HOlIKv@nI_s9oNdmiDF5kK%5nYCznF5ck1~xRZc=7cokm2W5xw z#Bk6%%LatFsIpKpB|Kb?tfhoOxb!?^qelj|jZWEgeQNtEbS|Y%qVtXVK3ENY;XYqm>4BKF(-Uxz zd1~<6wvHOx!ZoVK{ZgkmmbyAQik?tG%iG!(I*n^L3=McgP9hPX8*iGO7_zsC`?hg*ovNkU)mR;PP%;cT2o`pUczc|5YavfQS6>ICbqdQHht1rXYW8Wr2P;&h;E>t z^<`5WgD`l~JI@+z|Szjft=^{^iBy{ORkCw7cZkWlJXtDl;1<`Pl=o>4M)Azn$|SlZnuCcZ8nZ%>Nbm zMPz4locBlIuQNUmXCgaK;#`j=Ud_*0z$vajdl|n!g#SC^Ut-+OgRt>F@cLj?#Pc8UneeY(jaM?V^aHOJ z?>!OxuUK40i&FnO`>g7EZjQho175GjJsKB?CLo@AHBQ=j6L`wv4zXCW^Bk^rT6_kh z{yQz!!X^y4~dw z_^lCmo^bAqlrN!sBlsVQz=Iu}cxG_WxS#6u+FM;WhmC=phugUc7Z3T^I>@+$?ySFUL-$R&oN<@8-@IgTJ4A*yxGP-uQ>$BL|D~-txe5AKcY5<(H?w(j zB9Um;dk8Bson9i5=}i}0uaL$j$cjv|GmW2QqS;;C*O$+@y}9meVQI^F^|ZCD=$zvw zlN~EFYgXdQ_ag$Ll37Vp!n1Jp)6&!{yFtMq~kEX6dc*LUv;uBAYk6*qkcn z2aqpsi@T}G8l!O9665wiQN@2!xztzL>CMex=LwcNy}sg#%5)~z0Gs0{Jr9?&>HZa& zE;rfP;@W7r@@`(XtTWl=b}e4go}?r}Z+4)&uUZ9F(+J5X=$z;0H{VxGb}U=dneTLy z#$7vbcMi>FO}04HpS39&b8GN}r8b$l)6MkW>26Ht`bbr&rE!K!Kyz{&%?|F4r?sMf z(YogPi9=cA5uF0!L+%`U^;eh=3wI+ zQ&YOn?M{2?@s8}}L7|Iu=oxApc~`sfD=@StlbgES&Q`b6Yi`1OmAli0Za3%oFHc-A z-GheR>9uy_^+0+cleH4)DT$U6k3S=0u1K_W=QeK47P4S;y)A>;B-)4HL?D626v$-o zo~I{Y*m81p^DFpi%&?O)^fkHe2l5I5&nsY|lJ9rZnM}4=EV<{0t><^-IahS)<%Mfs z17!;r+=BT$UBG%FgRFMWALk^Ipgvj5 zdM+>I5EYhhX?H`mCpUm#y-e@;vW?b=bmxkL`C^uOy4709+9ttwSSM)|W4?Ku@i6~4Li`Tj z`}0|m-J}< z3l-j=_)`jRRQMp{k{`+QJqp)({(YrK=iv_&Kh^t897JD^;D1`-SAtLCeKw@$8mq;a z7Zty@OZ#v{;=g0>jQL>%|GzLEuCKQg{|x95f8JAgS^mi&D4hS<3a36IdKM|1_H+ba z&N!VYZ`b1>x<%nS|DRNPbRIH_pY$xXT8tTp;J;ttI{y!c^f;{NQN^$A?qWQg&%aRo zI-f5nT<7zE!s}sE@^eDr)D{G9;*Lzk6z?54h!!eb=WPk&RA1WvcEwM6WPrOhf5x{>3_^uZ~jK%I^LI*9&Ptk#ZU1*!Fqla!T)oG z>v)fa^n8o;{95sAyAvq!AgM3M-eJ#(@o>F-jPY=O>J`7vPh8=bLASJ%I~fCygwUhz}jWPJN#1pku?*LnL^NRP}P-&XwE?spZg_55>4&wkG5n~GoSc~{|c zRDOOF((`@RbIt_+f{L}C^BI?XI?R7b1piFN!}Zvt_;o$r6w*JF^>-;;*Vj6wNBcRT zaGkf!N)OfJf3p5xctZ^gwH!>d1^IeKx z=lQ{q{+X=*j})%+{AHy_`}wrOb>5y;dg$^3&fANMU+eh}<6-{~DSqvL6W(JGNxdv% z{Rx;X2Q6DLvZHUnyMYEr$0+L{g9Ua=eom57*cE zjEDWdMDc6?S17y@c4S_AnsKo!>-J|AuH$-M>Cth0NAXkp`6l~+D1!fI3fFmfJEX^c z-V1%dQvBL(>>Lz=#DB-$88eCTio7vikvGM!^ENZ2|7DKr8inip%vXA}pDPuv+xZ&C z!~U#S{Mw&x#wFhGvp)k0*Zyo$dbB?eD_r~Y1;)ev>{9&NpC=d>f8_b+8HH(CK2J+;}Cov0JFZ301rH{cMQ z_AZDBUy4I;d0r}Yx#c5NBs}gWo{(Q;R52N7=$P% zM1+^V<}l{d1cC^sLny}=gz*$=k%tscW%51H7ZgtX7x4XGDxCP`TLWpIqW^N{I~?Md z?}SD}xP12$4)?^8WG`i$ag>2g>d=4XI%)F?|beI;qraYt`IKY_q-6o<@=tW zgmC%3=XeO0?|UvLr$KZ&+g|xU*D3rQg|AaM4~@3;UWMb+jes6hIMr7xmprL({k7)b zEBxF*i!t9*IO(B2M)bDA<=Y*?C(+;zqT(s`%Kw?A@H&O-eIAmL?;86QKjA^Yh!?l? zd+7}(jxQ7ZbFW+#vVG||cEddrr`H`OzM)t&_|$^YxP4K7vJW}pg}g7=lfiqN&6(_= zhxc9^umx|`l7iEE4_a8F^!$a2$#LV64L25RI~6u0lB<0tzbDW1vq)4%9U z9RJkH#_^Yp+4h?nzQ;#T@xcQ9!_E`s*J0iQ0IcuyfeG^qOe2f6$v#)I>!C|Jap zjAd8jp4MA3H_ACmUdA&SgGrv&i6STGD0y155^4LiE)_XBN6CMhgh5*VeB6tioTKFX ztaQ0N&CMbw=P3EjRpi^oApbxW`6XkJ-@)=a|FjMjzvUd||IRA%OUEGpcolhCAB$Z% zN7;Xh<#qkh`b*^G>;R*s0Ij7p{Wag*q9=7=H0NoeceA8xkp^+Sr_l%Am#f_qlq}5THJAOzhJ$kEXDE0);mI zko?XCzEl$nQ~Z>QaQyV#LOMg@CdKhz6)F&Uh*-+vx0<}iizScwFp<_Gdx3n*BQdFybi|Ci@rS2-~Ok>(%VL zyvS|Q#&J!&nzlyR-^2EG`=!1fwtpzX{v&K(zPA^f;rPEBVgCr*zn>kZ_&;97{tZw_ zEaCe9F^@Ym=V@Yf0YvY+tI5B^^7z4FA{*iHYZ@;q zB;TS&?&TbZplv_Gz~|oU{0rTF>j8@{Ta_S^O9HYivI(znSG9 zLb;}}{4SJNtG}I`KWP}${;$L#@=|{kPuRA#M}sA(js+->)y7YHmJhi|Vy2Ed8|Z5v Y@z3%b&L4$YO@8N%zQkXJ3d8dM2Xgos?*IS* literal 0 HcmV?d00001 diff --git a/cpp03/ex00/Makefile b/cpp03/ex00/Makefile new file mode 100644 index 0000000..84c5057 --- /dev/null +++ b/cpp03/ex00/Makefile @@ -0,0 +1,62 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/30 14:46:09 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = claptrap + +SRC = ClapTrap.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./claptrap" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp03/ex00/claptrap b/cpp03/ex00/claptrap new file mode 100755 index 0000000000000000000000000000000000000000..a14e7f0c046afaf4c364e04f26edd0e685255809 GIT binary patch literal 29144 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 14:27:32 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 20:33:44 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +int main() +{ + ClapTrap claptrap1("ClapTrap1"); + ClapTrap claptrap2("ClapTrap2"); + + claptrap1.printStats(); + claptrap2.printStats(); + + claptrap1.attack(claptrap2.getName()); + claptrap2.takeDamage(claptrap1.getAttackDamage()); + + claptrap2.attack(claptrap1.getName()); + claptrap1.takeDamage(claptrap2.getAttackDamage()); + + claptrap1.beRepaired(5); + + claptrap2.beRepaired(3); + + for (int i = 0; i < 3; i++) + { + claptrap1.attack(claptrap2.getName()); + claptrap2.takeDamage(claptrap1.getAttackDamage()); + + claptrap2.attack(claptrap1.getName()); + claptrap1.takeDamage(claptrap2.getAttackDamage()); + } + claptrap1.printStats(); + claptrap2.printStats(); + + return (0); +} diff --git a/cpp03/ex00/main.o b/cpp03/ex00/main.o new file mode 100644 index 0000000000000000000000000000000000000000..8e1720dbada7bdb01696cff481459225a927f53a GIT binary patch literal 13416 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 Z`xhHD9FcJJ-nX87i}`STKhhYL|2GmhpTYnD literal 0 HcmV?d00001 diff --git a/cpp03/ex01/.vscode/c_cpp_properties.json b/cpp03/ex01/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp03/ex01/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp03/ex01/.vscode/launch.json b/cpp03/ex01/.vscode/launch.json new file mode 100644 index 0000000..4767990 --- /dev/null +++ b/cpp03/ex01/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp03/ex01", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp03/ex01/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp03/ex01/.vscode/settings.json b/cpp03/ex01/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp03/ex01/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp03/ex01/ClapTrap.cpp b/cpp03/ex01/ClapTrap.cpp new file mode 100644 index 0000000..8704bd3 --- /dev/null +++ b/cpp03/ex01/ClapTrap.cpp @@ -0,0 +1,114 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 13:59:36 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:28:06 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +ClapTrap::ClapTrap():Name(""), HitPoints(10), EnergyPoints(10), AttackDamage(0) {} + +ClapTrap::ClapTrap(std::string name) : Name(name), HitPoints(10), EnergyPoints(10), AttackDamage(0) +{ + std::cout << GREEN << "ClapTrap contructor " << this->Name << " is created!\n" << RESET << std::endl; +} + +ClapTrap::ClapTrap(const ClapTrap ©) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for ClapTrap " << this->Name << RESET << std::endl; + return; +} + +ClapTrap &ClapTrap::operator = (const ClapTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for ClapTrap " << this->Name << RESET << std::endl; + return (*this); +} + +ClapTrap::~ClapTrap() +{ + std::cout << RED << "\nClapTrap " << this->Name << " is detroyed!" << RESET << std::endl; +} + +void ClapTrap::attack(const std::string& target) +{ + if (EnergyPoints > 0 && HitPoints > 0) + { + std::cout << MAGENTA << "ClapTrap " << Name << " attacks " << target << ", causing " << AttackDamage << " points of damage!" << RESET << std::endl; + EnergyPoints--; + } + else + { + std::cout << "ClapTrap " << Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void ClapTrap::takeDamage(unsigned int amount) +{ + if (HitPoints > amount) + { + HitPoints -= amount; + std::cout << RED << "ClapTrap " << Name << " takes " << amount << " points of damage!" << RESET << std::endl; + } + else + { + HitPoints = 0; + std::cout << "ClapTrap " << Name << " is out of hit points and can't take more damage!" << std::endl; + } +} + +void ClapTrap::beRepaired(unsigned int amount) +{ + if (EnergyPoints > 0 && HitPoints > 0) + { + HitPoints += amount; + EnergyPoints--; + std::cout << BLUE << "ClapTrap " << Name << " repairs itself, recovering " << amount << " hit points!" << RESET << std::endl; + } + else + { + std::cout << "ClapTrap " << Name << " has no energy or hit points to repair itself!" << std::endl; + } +} + +std::string ClapTrap::getName() const +{ + return (this->Name); +} + +unsigned int ClapTrap::getHitPoints() const +{ + return (this->HitPoints); +} + +unsigned int ClapTrap::getEnergyPoints() const +{ + return (this->EnergyPoints); +} + +unsigned int ClapTrap::getAttackDamage() const +{ + return (this->AttackDamage); +} + +void ClapTrap::printStats() const +{ + std::cout << GREEN << "\nStatistiques pour " << Name << ":" << RESET << std::endl; + std::cout << "Points de vie: " << HitPoints << std::endl; + std::cout << "Points d'énergie: " << EnergyPoints << std::endl; + std::cout << "Dégâts d'attaque: " << AttackDamage << std::endl; +} diff --git a/cpp03/ex01/ClapTrap.hpp b/cpp03/ex01/ClapTrap.hpp new file mode 100644 index 0000000..b7e3336 --- /dev/null +++ b/cpp03/ex01/ClapTrap.hpp @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 13:53:03 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:24:32 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CLAPTRAP_HPP +#define CLAPTRAP_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class ClapTrap +{ + protected: + std::string Name; + unsigned int HitPoints; + unsigned int EnergyPoints; + unsigned int AttackDamage; + + public: + ClapTrap(); + ClapTrap(std::string name); + ClapTrap(const ClapTrap ©); + ClapTrap & operator = (const ClapTrap &operator_aff); + ~ClapTrap(); + + void attack(const std::string& target); + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + + std::string getName() const; + unsigned int getHitPoints() const; + unsigned int getEnergyPoints() const; + unsigned int getAttackDamage() const; + void printStats() const; +}; + +#endif \ No newline at end of file diff --git a/cpp03/ex01/Makefile b/cpp03/ex01/Makefile new file mode 100644 index 0000000..489e671 --- /dev/null +++ b/cpp03/ex01/Makefile @@ -0,0 +1,63 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/30 16:04:30 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = scavtrap + +SRC = ClapTrap.cpp \ + ScavTrap.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./scavtrap" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp03/ex01/ScavTrap.cpp b/cpp03/ex01/ScavTrap.cpp new file mode 100644 index 0000000..e7a4c2f --- /dev/null +++ b/cpp03/ex01/ScavTrap.cpp @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 15:42:16 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:28:16 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" + +ScavTrap::ScavTrap() : ClapTrap() +{ + this->HitPoints = 100; + this->EnergyPoints = 50; + this->AttackDamage = 20; +} + +ScavTrap::ScavTrap(std::string name) : ClapTrap(name) +{ + this->HitPoints = 100; + this->EnergyPoints = 50; + this->AttackDamage = 20; + std::cout << GREEN << "ScavTrap constructor " << this->Name << " has been created." << RESET << std::endl; +} + +ScavTrap::ScavTrap(const ScavTrap ©) : ClapTrap(copy) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for ScavTrap " << this->Name << RESET << std::endl; +} + +ScavTrap &ScavTrap::operator=(const ScavTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for ScavTrap " << this->Name << RESET << std::endl; + return (*this); +} + +ScavTrap::~ScavTrap() +{ + std::cout << RED << "ScavTrap " << this->Name << " has been destroyed." << RESET << std::endl; +} + +void ScavTrap::attack(const std::string& target) +{ + if (this->EnergyPoints > 0 && this->HitPoints > 0) + { + std::cout << CYAN << "ScavTrap " << this->Name << " attacks " << target << ", causing " << this->AttackDamage << " points of damage!" << RESET << std::endl; + this->EnergyPoints--; + } + else + { + std::cout << "ScavTrap " << this->Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void ScavTrap::guardGate() +{ + std::cout << "ScavTrap " << this->Name << " is now in Gate keeper mode." << std::endl; +} diff --git a/cpp03/ex01/ScavTrap.hpp b/cpp03/ex01/ScavTrap.hpp new file mode 100644 index 0000000..8ecd43f --- /dev/null +++ b/cpp03/ex01/ScavTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 15:34:27 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:24:07 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SCAVTRAP_HPP +#define SCAVTRAP_HPP + +#include "ClapTrap.hpp" + +class ScavTrap : public ClapTrap +{ + public: + ScavTrap(); + ScavTrap(std::string name); + ScavTrap(const ScavTrap ©); + ScavTrap & operator = (const ScavTrap &operator_aff); + ~ScavTrap(); + + void attack(const std::string& target); + void guardGate(); +}; + +#endif diff --git a/cpp03/ex01/main.cpp b/cpp03/ex01/main.cpp new file mode 100644 index 0000000..a536d82 --- /dev/null +++ b/cpp03/ex01/main.cpp @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 15:59:39 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 20:40:16 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" +#include "ScavTrap.hpp" + +int main() +{ + ClapTrap claptrap1("Clappy"); + ScavTrap scavtrap1("Serena"); + + claptrap1.printStats(); + scavtrap1.printStats(); + + std::cout << "\n--- Tests ClapTrap ---" << std::endl; + claptrap1.attack("un ennemi"); + claptrap1.takeDamage(3); + claptrap1.beRepaired(2); + + std::cout << "\n--- Tests ScavTrap ---" << std::endl; + scavtrap1.attack("un autre ennemi"); + scavtrap1.takeDamage(15); + scavtrap1.beRepaired(10); + scavtrap1.guardGate(); + + std::cout << "\n--- Tests avancés : Interactions entre ClapTrap et ScavTrap ---" << std::endl; + claptrap1.attack(scavtrap1.getName()); + scavtrap1.takeDamage(claptrap1.getAttackDamage()); + + scavtrap1.attack(claptrap1.getName()); + claptrap1.takeDamage(scavtrap1.getAttackDamage()); + + std::cout << "\n--- Tests des limites ---" << std::endl; + while (scavtrap1.getEnergyPoints() > 0) + { + scavtrap1.attack(claptrap1.getName()); + claptrap1.takeDamage(scavtrap1.getAttackDamage()); + } + + std::cout << "\n--- ScavTrap essaie d'attaquer sans points d'énergie ---" << std::endl; + scavtrap1.attack(claptrap1.getName()); + + std::cout << "\n--- ClapTrap essaie de se réparer avec des points de vie au maximum ---" << std::endl; + claptrap1.beRepaired(1); + + claptrap1.printStats(); + scavtrap1.printStats(); + + return (0); +} diff --git a/cpp03/ex02/.vscode/c_cpp_properties.json b/cpp03/ex02/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp03/ex02/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp03/ex02/.vscode/launch.json b/cpp03/ex02/.vscode/launch.json new file mode 100644 index 0000000..e8e4e77 --- /dev/null +++ b/cpp03/ex02/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp03/ex02", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp03/ex02/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp03/ex02/.vscode/settings.json b/cpp03/ex02/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp03/ex02/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp03/ex02/ClapTrap.cpp b/cpp03/ex02/ClapTrap.cpp new file mode 100644 index 0000000..8704bd3 --- /dev/null +++ b/cpp03/ex02/ClapTrap.cpp @@ -0,0 +1,114 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 13:59:36 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:28:06 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +ClapTrap::ClapTrap():Name(""), HitPoints(10), EnergyPoints(10), AttackDamage(0) {} + +ClapTrap::ClapTrap(std::string name) : Name(name), HitPoints(10), EnergyPoints(10), AttackDamage(0) +{ + std::cout << GREEN << "ClapTrap contructor " << this->Name << " is created!\n" << RESET << std::endl; +} + +ClapTrap::ClapTrap(const ClapTrap ©) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for ClapTrap " << this->Name << RESET << std::endl; + return; +} + +ClapTrap &ClapTrap::operator = (const ClapTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for ClapTrap " << this->Name << RESET << std::endl; + return (*this); +} + +ClapTrap::~ClapTrap() +{ + std::cout << RED << "\nClapTrap " << this->Name << " is detroyed!" << RESET << std::endl; +} + +void ClapTrap::attack(const std::string& target) +{ + if (EnergyPoints > 0 && HitPoints > 0) + { + std::cout << MAGENTA << "ClapTrap " << Name << " attacks " << target << ", causing " << AttackDamage << " points of damage!" << RESET << std::endl; + EnergyPoints--; + } + else + { + std::cout << "ClapTrap " << Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void ClapTrap::takeDamage(unsigned int amount) +{ + if (HitPoints > amount) + { + HitPoints -= amount; + std::cout << RED << "ClapTrap " << Name << " takes " << amount << " points of damage!" << RESET << std::endl; + } + else + { + HitPoints = 0; + std::cout << "ClapTrap " << Name << " is out of hit points and can't take more damage!" << std::endl; + } +} + +void ClapTrap::beRepaired(unsigned int amount) +{ + if (EnergyPoints > 0 && HitPoints > 0) + { + HitPoints += amount; + EnergyPoints--; + std::cout << BLUE << "ClapTrap " << Name << " repairs itself, recovering " << amount << " hit points!" << RESET << std::endl; + } + else + { + std::cout << "ClapTrap " << Name << " has no energy or hit points to repair itself!" << std::endl; + } +} + +std::string ClapTrap::getName() const +{ + return (this->Name); +} + +unsigned int ClapTrap::getHitPoints() const +{ + return (this->HitPoints); +} + +unsigned int ClapTrap::getEnergyPoints() const +{ + return (this->EnergyPoints); +} + +unsigned int ClapTrap::getAttackDamage() const +{ + return (this->AttackDamage); +} + +void ClapTrap::printStats() const +{ + std::cout << GREEN << "\nStatistiques pour " << Name << ":" << RESET << std::endl; + std::cout << "Points de vie: " << HitPoints << std::endl; + std::cout << "Points d'énergie: " << EnergyPoints << std::endl; + std::cout << "Dégâts d'attaque: " << AttackDamage << std::endl; +} diff --git a/cpp03/ex02/ClapTrap.hpp b/cpp03/ex02/ClapTrap.hpp new file mode 100644 index 0000000..b7e3336 --- /dev/null +++ b/cpp03/ex02/ClapTrap.hpp @@ -0,0 +1,55 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 13:53:03 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:24:32 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CLAPTRAP_HPP +#define CLAPTRAP_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class ClapTrap +{ + protected: + std::string Name; + unsigned int HitPoints; + unsigned int EnergyPoints; + unsigned int AttackDamage; + + public: + ClapTrap(); + ClapTrap(std::string name); + ClapTrap(const ClapTrap ©); + ClapTrap & operator = (const ClapTrap &operator_aff); + ~ClapTrap(); + + void attack(const std::string& target); + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + + std::string getName() const; + unsigned int getHitPoints() const; + unsigned int getEnergyPoints() const; + unsigned int getAttackDamage() const; + void printStats() const; +}; + +#endif \ No newline at end of file diff --git a/cpp03/ex02/FragTrap.cpp b/cpp03/ex02/FragTrap.cpp new file mode 100644 index 0000000..1532423 --- /dev/null +++ b/cpp03/ex02/FragTrap.cpp @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 16:22:04 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:35:21 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "FragTrap.hpp" + +FragTrap::FragTrap() : ClapTrap() +{ + this->HitPoints = 100; + this->EnergyPoints = 100; + this->AttackDamage = 30; +} + +FragTrap::FragTrap(std::string name) : ClapTrap(name) +{ + this->HitPoints = 100; + this->EnergyPoints = 100; + this->AttackDamage = 30; + std::cout << GREEN << "FragTrap contructor " << this->Name << " has been created." << RESET << std::endl; +} + +FragTrap::FragTrap(const FragTrap ©) : ClapTrap(copy) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for FragTrap " << this->Name << RESET << std::endl; +} + +FragTrap &FragTrap::operator=(const FragTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for FragTrap " << this->Name << RESET << std::endl; + return (*this); +} + +FragTrap::~FragTrap() +{ + std::cout << RED << "FragTrap " << this->Name << " has been destroyed." << RESET << std::endl; +} + +void FragTrap::attack(const std::string& target) +{ + if (this->EnergyPoints > 0 && this->HitPoints > 0) + { + std::cout << CYAN << "FragTrap " << this->Name << " attacks " << target << ", causing " << this->AttackDamage << " points of damage!" << RESET << std::endl; + this->EnergyPoints--; + } + else + { + std::cout << "FragTrap " << this->Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void FragTrap::highFivesGuys(void) +{ + std::cout << YELLOW << "FragTrap " << this->Name << " requests a positive high five!" << RESET << std::endl; +} \ No newline at end of file diff --git a/cpp03/ex02/FragTrap.hpp b/cpp03/ex02/FragTrap.hpp new file mode 100644 index 0000000..ebe7eed --- /dev/null +++ b/cpp03/ex02/FragTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 16:19:16 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:33:38 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FRAGTRAP_HPP +#define FRAGTRAP_HPP + +#include "ClapTrap.hpp" + +class FragTrap : public ClapTrap +{ + public: + FragTrap(); + FragTrap(std::string name); + FragTrap(const FragTrap ©); + FragTrap & operator = (const FragTrap &operator_aff); + ~FragTrap(); + + void attack(const std::string& target); + void highFivesGuys(void); +}; + +#endif diff --git a/cpp03/ex02/Makefile b/cpp03/ex02/Makefile new file mode 100644 index 0000000..0dd750b --- /dev/null +++ b/cpp03/ex02/Makefile @@ -0,0 +1,64 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/30 16:29:47 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = fragtrap + +SRC = ClapTrap.cpp \ + ScavTrap.cpp \ + FragTrap.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./fragtrap" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp03/ex02/ScavTrap.cpp b/cpp03/ex02/ScavTrap.cpp new file mode 100644 index 0000000..e7a4c2f --- /dev/null +++ b/cpp03/ex02/ScavTrap.cpp @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 15:42:16 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:28:16 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" + +ScavTrap::ScavTrap() : ClapTrap() +{ + this->HitPoints = 100; + this->EnergyPoints = 50; + this->AttackDamage = 20; +} + +ScavTrap::ScavTrap(std::string name) : ClapTrap(name) +{ + this->HitPoints = 100; + this->EnergyPoints = 50; + this->AttackDamage = 20; + std::cout << GREEN << "ScavTrap constructor " << this->Name << " has been created." << RESET << std::endl; +} + +ScavTrap::ScavTrap(const ScavTrap ©) : ClapTrap(copy) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for ScavTrap " << this->Name << RESET << std::endl; +} + +ScavTrap &ScavTrap::operator=(const ScavTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for ScavTrap " << this->Name << RESET << std::endl; + return (*this); +} + +ScavTrap::~ScavTrap() +{ + std::cout << RED << "ScavTrap " << this->Name << " has been destroyed." << RESET << std::endl; +} + +void ScavTrap::attack(const std::string& target) +{ + if (this->EnergyPoints > 0 && this->HitPoints > 0) + { + std::cout << CYAN << "ScavTrap " << this->Name << " attacks " << target << ", causing " << this->AttackDamage << " points of damage!" << RESET << std::endl; + this->EnergyPoints--; + } + else + { + std::cout << "ScavTrap " << this->Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void ScavTrap::guardGate() +{ + std::cout << "ScavTrap " << this->Name << " is now in Gate keeper mode." << std::endl; +} diff --git a/cpp03/ex02/ScavTrap.hpp b/cpp03/ex02/ScavTrap.hpp new file mode 100644 index 0000000..8ecd43f --- /dev/null +++ b/cpp03/ex02/ScavTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 15:34:27 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:24:07 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SCAVTRAP_HPP +#define SCAVTRAP_HPP + +#include "ClapTrap.hpp" + +class ScavTrap : public ClapTrap +{ + public: + ScavTrap(); + ScavTrap(std::string name); + ScavTrap(const ScavTrap ©); + ScavTrap & operator = (const ScavTrap &operator_aff); + ~ScavTrap(); + + void attack(const std::string& target); + void guardGate(); +}; + +#endif diff --git a/cpp03/ex02/main.cpp b/cpp03/ex02/main.cpp new file mode 100644 index 0000000..ddb340e --- /dev/null +++ b/cpp03/ex02/main.cpp @@ -0,0 +1,68 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 15:59:39 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 21:15:23 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" +#include "ScavTrap.hpp" +#include "FragTrap.hpp" + +int main() +{ + ClapTrap claptrap("Clappy"); + ScavTrap scavtrap("Serena"); + FragTrap fragtrap("Fraggy"); + + claptrap.printStats(); + scavtrap.printStats(); + fragtrap.printStats(); + + std::cout << "\n--- Tests ClapTrap ---" << std::endl; + claptrap.attack("un ennemi"); + claptrap.takeDamage(3); + claptrap.beRepaired(2); + + std::cout << "\n--- Tests ScavTrap ---" << std::endl; + scavtrap.attack("un autre ennemi"); + scavtrap.takeDamage(15); + scavtrap.beRepaired(10); + scavtrap.guardGate(); + + std::cout << "\n--- Tests FragTrap ---" << std::endl; + fragtrap.attack("un ennemi lointain"); + fragtrap.takeDamage(20); + fragtrap.beRepaired(15); + fragtrap.highFivesGuys(); + + std::cout << "\n--- Tests avancés : Interactions entre différents types de Traps ---" << std::endl; + scavtrap.attack(fragtrap.getName()); + fragtrap.takeDamage(scavtrap.getAttackDamage()); + + fragtrap.attack(scavtrap.getName()); + scavtrap.takeDamage(fragtrap.getAttackDamage()); + + std::cout << "\n--- Tests des limites de ClapTrap ---" << std::endl; + while (claptrap.getEnergyPoints() > 0) + { + claptrap.attack(fragtrap.getName()); + fragtrap.takeDamage(claptrap.getAttackDamage()); + } + claptrap.attack(fragtrap.getName()); + + std::cout << "\n--- Tester les limites de ScavTrap et FragTrap ---" << std::endl; + scavtrap.takeDamage(100); + fragtrap.takeDamage(150); + + claptrap.printStats(); + scavtrap.printStats(); + fragtrap.printStats(); + + return (0); +} diff --git a/cpp03/ex03/.vscode/c_cpp_properties.json b/cpp03/ex03/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp03/ex03/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp03/ex03/.vscode/launch.json b/cpp03/ex03/.vscode/launch.json new file mode 100644 index 0000000..61b63ea --- /dev/null +++ b/cpp03/ex03/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp03/ex03", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp03/ex03/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp03/ex03/.vscode/settings.json b/cpp03/ex03/.vscode/settings.json new file mode 100644 index 0000000..ebd8700 --- /dev/null +++ b/cpp03/ex03/.vscode/settings.json @@ -0,0 +1,105 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/cpp03/ex03/ClapTrap.cpp b/cpp03/ex03/ClapTrap.cpp new file mode 100644 index 0000000..d5502d0 --- /dev/null +++ b/cpp03/ex03/ClapTrap.cpp @@ -0,0 +1,130 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 13:59:36 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 00:01:21 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" + +ClapTrap::ClapTrap():Name(""), HitPoints(10), EnergyPoints(10), AttackDamage(0) +{ + std::cout << GREEN << "ClapTrap default constructor called!\n" << RESET << std::endl; +} + +ClapTrap::ClapTrap(std::string name) : Name(name), HitPoints(10), EnergyPoints(10), AttackDamage(0) +{ + std::cout << GREEN << "ClapTrap contructor " << this->Name << " is created!\n" << RESET << std::endl; +} + +ClapTrap::ClapTrap(const ClapTrap ©) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for ClapTrap " << this->Name << RESET << std::endl; + return; +} + +ClapTrap &ClapTrap::operator = (const ClapTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for ClapTrap " << this->Name << RESET << std::endl; + return (*this); +} + +ClapTrap::~ClapTrap() +{ + std::cout << RED << "\nClapTrap " << this->Name << " is detroyed!" << RESET << std::endl; +} + +void ClapTrap::setHitPoints(int points) +{ + HitPoints = points; +} +void ClapTrap::setEnergypoints(int points) +{ + EnergyPoints = points; +} +void ClapTrap::setAttackDamage(int points) +{ + AttackDamage = points; +} + +void ClapTrap::attack(const std::string& target) +{ + if (EnergyPoints > 0 && HitPoints > 0) + { + std::cout << MAGENTA << "ClapTrap " << Name << " attacks " << target << ", causing " << AttackDamage << " points of damage!" << RESET << std::endl; + EnergyPoints--; + } + else + { + std::cout << "ClapTrap " << Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void ClapTrap::takeDamage(unsigned int amount) +{ + if (HitPoints > amount) + { + HitPoints -= amount; + std::cout << RED << "ClapTrap " << Name << " takes " << amount << " points of damage!" << RESET << std::endl; + } + else + { + HitPoints = 0; + std::cout << "ClapTrap " << Name << " is out of hit points and can't take more damage!" << std::endl; + } +} + +void ClapTrap::beRepaired(unsigned int amount) +{ + if (EnergyPoints > 0 && HitPoints > 0) + { + HitPoints += amount; + EnergyPoints--; + std::cout << BLUE << "ClapTrap " << Name << " repairs itself, recovering " << amount << " hit points!" << RESET << std::endl; + } + else + { + std::cout << "ClapTrap " << Name << " has no energy or hit points to repair itself!" << std::endl; + } +} + +std::string ClapTrap::getName() const +{ + return (this->Name); +} + +unsigned int ClapTrap::getHitPoints() const +{ + return (this->HitPoints); +} + +unsigned int ClapTrap::getEnergyPoints() const +{ + return (this->EnergyPoints); +} + +unsigned int ClapTrap::getAttackDamage() const +{ + return (this->AttackDamage); +} + +void ClapTrap::printStats() const +{ + std::cout << GREEN << "\nStatistiques pour " << Name << ":" << RESET << std::endl; + std::cout << "Points de vie: " << HitPoints << std::endl; + std::cout << "Points d'énergie: " << EnergyPoints << std::endl; + std::cout << "Dégâts d'attaque: " << AttackDamage << std::endl; +} diff --git a/cpp03/ex03/ClapTrap.hpp b/cpp03/ex03/ClapTrap.hpp new file mode 100644 index 0000000..5d7d188 --- /dev/null +++ b/cpp03/ex03/ClapTrap.hpp @@ -0,0 +1,58 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ClapTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 13:53:03 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 23:59:57 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CLAPTRAP_HPP +#define CLAPTRAP_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class ClapTrap +{ + protected: + std::string Name; + unsigned int HitPoints; + unsigned int EnergyPoints; + unsigned int AttackDamage; + + public: + ClapTrap(); + ClapTrap(std::string name); + ClapTrap(const ClapTrap ©); + ClapTrap & operator = (const ClapTrap &operator_aff); + ~ClapTrap(); + + void attack(const std::string& target); + void takeDamage(unsigned int amount); + void beRepaired(unsigned int amount); + void setHitPoints(int points); + void setEnergypoints(int points); + void setAttackDamage(int points); + + std::string getName() const; + unsigned int getHitPoints() const; + unsigned int getEnergyPoints() const; + unsigned int getAttackDamage() const; + void printStats() const; +}; + +#endif \ No newline at end of file diff --git a/cpp03/ex03/DiamondTrap.cpp b/cpp03/ex03/DiamondTrap.cpp new file mode 100644 index 0000000..158c255 --- /dev/null +++ b/cpp03/ex03/DiamondTrap.cpp @@ -0,0 +1,62 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* DiamondTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 16:57:52 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 00:09:39 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "DiamondTrap.hpp" + +DiamondTrap::DiamondTrap() : ClapTrap(), ScavTrap(), FragTrap() +{ + this->HitPoints = FragTrap::HitPoints; // Défini par FragTrap + this->EnergyPoints = ScavTrap::EnergyPoints; // Défini par ScavTrap + this->AttackDamage = FragTrap::AttackDamage; // Défini par FragTrap +} + +DiamondTrap::DiamondTrap(std::string name) : ClapTrap(name +"_clap_trap"), ScavTrap(name), FragTrap (name), _name(name) +{ + this->HitPoints = FragTrap::HitPoints; // Défini par FragTrap + this->EnergyPoints = ScavTrap::EnergyPoints; // Défini par ScavTrap + this->AttackDamage = FragTrap::AttackDamage; // Défini par FragTrap + std::cout << GREEN << "DiamondTrap " << this->Name << " est créé." << RESET << std::endl; +} + +DiamondTrap::DiamondTrap(const DiamondTrap ©) : ClapTrap(copy), FragTrap(copy), ScavTrap(copy) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for DiamondTrap " << this->Name << RESET << std::endl; +} + +DiamondTrap &DiamondTrap::operator=(const DiamondTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for FragTrap " << this->Name << RESET << std::endl; + return (*this); +} + +DiamondTrap::~DiamondTrap() +{ + std::cout << RED <<"DiamondTrap " << this->Name << " est détruit." << RESET << std::endl; +} + +void DiamondTrap::whoAmI() +{ + std::cout << "Je suis " << this->Name << " et mon nom ClapTrap est " << ClapTrap::Name << "." << std::endl; +} + +void DiamondTrap::attack(const std::string& target) +{ + ScavTrap::attack(target); // Utilise l'attaque de ScavTrap +} diff --git a/cpp03/ex03/DiamondTrap.hpp b/cpp03/ex03/DiamondTrap.hpp new file mode 100644 index 0000000..c7c0eda --- /dev/null +++ b/cpp03/ex03/DiamondTrap.hpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* DiamondTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 16:56:02 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 23:04:37 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef DIAMONDTRAP_H +#define DIAMONDTRAP_H + +#include "FragTrap.hpp" +#include "ScavTrap.hpp" + +class DiamondTrap : public FragTrap, public ScavTrap +{ + private: + std::string _name; + + public: + DiamondTrap(); + DiamondTrap(std::string name); + DiamondTrap(const DiamondTrap ©); + DiamondTrap & operator=(const DiamondTrap &operator_aff); + ~DiamondTrap(); + + void whoAmI(); + void attack(const std::string& target); +}; + +#endif diff --git a/cpp03/ex03/FragTrap.cpp b/cpp03/ex03/FragTrap.cpp new file mode 100644 index 0000000..1532423 --- /dev/null +++ b/cpp03/ex03/FragTrap.cpp @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 16:22:04 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:35:21 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "FragTrap.hpp" + +FragTrap::FragTrap() : ClapTrap() +{ + this->HitPoints = 100; + this->EnergyPoints = 100; + this->AttackDamage = 30; +} + +FragTrap::FragTrap(std::string name) : ClapTrap(name) +{ + this->HitPoints = 100; + this->EnergyPoints = 100; + this->AttackDamage = 30; + std::cout << GREEN << "FragTrap contructor " << this->Name << " has been created." << RESET << std::endl; +} + +FragTrap::FragTrap(const FragTrap ©) : ClapTrap(copy) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for FragTrap " << this->Name << RESET << std::endl; +} + +FragTrap &FragTrap::operator=(const FragTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for FragTrap " << this->Name << RESET << std::endl; + return (*this); +} + +FragTrap::~FragTrap() +{ + std::cout << RED << "FragTrap " << this->Name << " has been destroyed." << RESET << std::endl; +} + +void FragTrap::attack(const std::string& target) +{ + if (this->EnergyPoints > 0 && this->HitPoints > 0) + { + std::cout << CYAN << "FragTrap " << this->Name << " attacks " << target << ", causing " << this->AttackDamage << " points of damage!" << RESET << std::endl; + this->EnergyPoints--; + } + else + { + std::cout << "FragTrap " << this->Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void FragTrap::highFivesGuys(void) +{ + std::cout << YELLOW << "FragTrap " << this->Name << " requests a positive high five!" << RESET << std::endl; +} \ No newline at end of file diff --git a/cpp03/ex03/FragTrap.hpp b/cpp03/ex03/FragTrap.hpp new file mode 100644 index 0000000..7c48303 --- /dev/null +++ b/cpp03/ex03/FragTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* FragTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 16:19:16 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 23:02:55 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FRAGTRAP_HPP +#define FRAGTRAP_HPP + +#include "ClapTrap.hpp" + +class FragTrap : virtual public ClapTrap +{ + public: + FragTrap(); + FragTrap(std::string name); + FragTrap(const FragTrap ©); + FragTrap & operator = (const FragTrap &operator_aff); + ~FragTrap(); + + void attack(const std::string& target); + void highFivesGuys(void); +}; + +#endif diff --git a/cpp03/ex03/Makefile b/cpp03/ex03/Makefile new file mode 100644 index 0000000..93c9fad --- /dev/null +++ b/cpp03/ex03/Makefile @@ -0,0 +1,65 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/30 17:12:42 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = diamondtrap + +SRC = ClapTrap.cpp \ + ScavTrap.cpp \ + FragTrap.cpp \ + DiamondTrap.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./diamondtrap" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp03/ex03/ScavTrap.cpp b/cpp03/ex03/ScavTrap.cpp new file mode 100644 index 0000000..e7a4c2f --- /dev/null +++ b/cpp03/ex03/ScavTrap.cpp @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 15:42:16 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 22:28:16 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ScavTrap.hpp" + +ScavTrap::ScavTrap() : ClapTrap() +{ + this->HitPoints = 100; + this->EnergyPoints = 50; + this->AttackDamage = 20; +} + +ScavTrap::ScavTrap(std::string name) : ClapTrap(name) +{ + this->HitPoints = 100; + this->EnergyPoints = 50; + this->AttackDamage = 20; + std::cout << GREEN << "ScavTrap constructor " << this->Name << " has been created." << RESET << std::endl; +} + +ScavTrap::ScavTrap(const ScavTrap ©) : ClapTrap(copy) +{ + *this = copy; + std::cout << CYAN << "Copy constructor called for ScavTrap " << this->Name << RESET << std::endl; +} + +ScavTrap &ScavTrap::operator=(const ScavTrap &operator_aff) +{ + if (this != &operator_aff) + { + this->Name = operator_aff.Name; + this->HitPoints = operator_aff.HitPoints; + this->EnergyPoints = operator_aff.EnergyPoints; + this->AttackDamage = operator_aff.AttackDamage; + } + std::cout << MAGENTA << "Assignment operator called for ScavTrap " << this->Name << RESET << std::endl; + return (*this); +} + +ScavTrap::~ScavTrap() +{ + std::cout << RED << "ScavTrap " << this->Name << " has been destroyed." << RESET << std::endl; +} + +void ScavTrap::attack(const std::string& target) +{ + if (this->EnergyPoints > 0 && this->HitPoints > 0) + { + std::cout << CYAN << "ScavTrap " << this->Name << " attacks " << target << ", causing " << this->AttackDamage << " points of damage!" << RESET << std::endl; + this->EnergyPoints--; + } + else + { + std::cout << "ScavTrap " << this->Name << " has no energy or hit points to attack!" << std::endl; + } +} + +void ScavTrap::guardGate() +{ + std::cout << "ScavTrap " << this->Name << " is now in Gate keeper mode." << std::endl; +} diff --git a/cpp03/ex03/ScavTrap.hpp b/cpp03/ex03/ScavTrap.hpp new file mode 100644 index 0000000..fc72585 --- /dev/null +++ b/cpp03/ex03/ScavTrap.hpp @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ScavTrap.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 15:34:27 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 23:03:04 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SCAVTRAP_HPP +#define SCAVTRAP_HPP + +#include "ClapTrap.hpp" + +class ScavTrap : virtual public ClapTrap +{ + public: + ScavTrap(); + ScavTrap(std::string name); + ScavTrap(const ScavTrap ©); + ScavTrap & operator = (const ScavTrap &operator_aff); + ~ScavTrap(); + + void attack(const std::string& target); + void guardGate(); +}; + +#endif diff --git a/cpp03/ex03/main.cpp b/cpp03/ex03/main.cpp new file mode 100644 index 0000000..74fcdca --- /dev/null +++ b/cpp03/ex03/main.cpp @@ -0,0 +1,91 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 16:27:47 by fgras-ca #+# #+# */ +/* Updated: 2023/12/30 23:48:31 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ClapTrap.hpp" +#include "ScavTrap.hpp" +#include "FragTrap.hpp" +#include "DiamondTrap.hpp" + +int main() +{ + // Création des instances + ClapTrap claptrap_default; + //ScavTrap scavtrap_default; + //FragTrap fragtrap_dafault; + DiamondTrap diamondtrap_default; + + ClapTrap claptrap("Clappy"); + //ScavTrap scavtrap("Serena"); + //FragTrap fragtrap("Fraggy"); + DiamondTrap diamondtrap("Diamy"); + + diamondtrap_default = diamondtrap; + + claptrap.printStats(); + //scavtrap.printStats(); + //fragtrap.printStats(); + diamondtrap.printStats(); + + // Tests basiques pour ClapTrap + std::cout << "\n--- Tests ClapTrap ---" << std::endl; + claptrap.attack("un ennemi"); + claptrap.takeDamage(3); + claptrap.beRepaired(2); + + // Tests basiques pour ScavTrap + //std::cout << "\n--- Tests ScavTrap ---" << std::endl; + //scavtrap.attack("un autre ennemi"); + //scavtrap.takeDamage(15); + //scavtrap.beRepaired(10); + //scavtrap.guardGate(); + + // Tests basiques pour FragTrap + //std::cout << "\n--- Tests FragTrap ---" << std::endl; + //fragtrap.attack("un ennemi lointain"); + //fragtrap.takeDamage(20); + //fragtrap.beRepaired(15); + //fragtrap.highFivesGuys(); + + // Tests spécifiques pour DiamondTrap + std::cout << "\n--- Tests DiamondTrap ---" << std::endl; + diamondtrap.attack("un ennemi mystérieux"); // Doit utiliser l'attaque de ScavTrap + diamondtrap.takeDamage(40); + diamondtrap.beRepaired(30); + diamondtrap.guardGate(); // Doit utiliser la capacité de ScavTrap + diamondtrap.highFivesGuys(); // Doit utiliser la capacité de FragTrap + diamondtrap.whoAmI(); // Affiche les noms DiamondTrap et ClapTrap + + // Tests des limites de DiamondTrap + std::cout << "\n--- Tests des limites de DiamondTrap ---" << std::endl; + while (diamondtrap.getEnergyPoints() > 0) + { + diamondtrap.attack("un ennemi lointain"); + } + std::cout << "DiamondTrap essaie d'attaquer sans points d'énergie." << std::endl; + diamondtrap.attack("un ennemi lointain"); + + claptrap.printStats(); + //scavtrap.printStats(); + //fragtrap.printStats(); + diamondtrap.printStats(); + + diamondtrap.whoAmI(); + + DiamondTrap dt("Test"); + DiamondTrap dtt; + + dt.whoAmI(); + dtt = dt; + dtt.highFivesGuys(); + + return (0); +} diff --git a/cpp04/ex00/.vscode/c_cpp_properties.json b/cpp04/ex00/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp04/ex00/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp04/ex00/.vscode/launch.json b/cpp04/ex00/.vscode/launch.json new file mode 100644 index 0000000..37ccc12 --- /dev/null +++ b/cpp04/ex00/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp04/ex00", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp04/ex00/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp04/ex00/.vscode/settings.json b/cpp04/ex00/.vscode/settings.json new file mode 100644 index 0000000..a01459e --- /dev/null +++ b/cpp04/ex00/.vscode/settings.json @@ -0,0 +1,67 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "array": "cpp", + "compare": "cpp", + "functional": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp" + } +} \ No newline at end of file diff --git a/cpp04/ex00/Animal.cpp b/cpp04/ex00/Animal.cpp new file mode 100644 index 0000000..0dee674 --- /dev/null +++ b/cpp04/ex00/Animal.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Animal.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 19:25:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:06:06 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Animal.hpp" + +Animal::Animal() : type("Undefined") +{ + std::cout << GREEN << "Animal constructor called" << RESET << std::endl; +} + +Animal::Animal(const Animal ©) : type(copy.type) +{ + std::cout << GREEN << "Animal copy constructor called. Type is copied as " << type << "." << RESET << std::endl; +} + +Animal& Animal::operator=(const Animal &operator_aff)// Protection contre l'auto-affectation +{ + if (this != &operator_aff) + { + this->type = operator_aff.type; + } + std::cout << "Animal assignment operator called. Type is set to " << type << "." << std::endl; + return (*this); +} + +Animal::~Animal() +{ + std::cout << RED << "Animal destructor called" << RESET << std::endl; +} + +std::string Animal::getType() const +{ + return (this->type); +} + +void Animal::makeSound() const +{ + std::cout << MAGENTA << "Some animal sound!" << RESET << std::endl; +} diff --git a/cpp04/ex00/Animal.hpp b/cpp04/ex00/Animal.hpp new file mode 100644 index 0000000..c77614f --- /dev/null +++ b/cpp04/ex00/Animal.hpp @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Animal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 19:09:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:31:25 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef ANIMAL_HPP +#define ANIMAL_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class Animal +{ + protected: + std::string type; + + public: + Animal(); + Animal(const Animal ©); + virtual Animal& operator=(const Animal &operator_aff); + virtual ~Animal(); + + std::string getType() const; + virtual void makeSound() const; +}; + +#endif diff --git a/cpp04/ex00/Cat.cpp b/cpp04/ex00/Cat.cpp new file mode 100644 index 0000000..7d73376 --- /dev/null +++ b/cpp04/ex00/Cat.cpp @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:52:48 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:54:23 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Cat.hpp" + +Cat::Cat() +{ + type = "Cat"; + std::cout << GREEN << "Cat default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +Cat::Cat(const Cat ©) : Animal(copy) +{ + std::cout << CYAN << "Cat copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +Cat& Cat::operator=(const Cat &operator_aff) +{ + Animal::operator=(operator_aff); + std::cout << MAGENTA << "Cat assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +Cat::~Cat() +{ + std::cout << RED << "Cat destructor called. Type was " << type << "." << RESET << std::endl; +} + +void Cat::makeSound() const +{ + std::cout << "Miaouhh! Miaouhh!" << std::endl; +} diff --git a/cpp04/ex00/Cat.hpp b/cpp04/ex00/Cat.hpp new file mode 100644 index 0000000..c89fef8 --- /dev/null +++ b/cpp04/ex00/Cat.hpp @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:17:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:18:06 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CAT_HPP +#define CAT_HPP + +#include "Animal.hpp" + +class Cat : public Animal +{ + public: + Cat(); + Cat(const Cat ©); + virtual Cat& operator=(const Cat &operator_aff); + virtual ~Cat(); + + void makeSound() const override; +}; + +#endif diff --git a/cpp04/ex00/Dog.cpp b/cpp04/ex00/Dog.cpp new file mode 100644 index 0000000..6521c13 --- /dev/null +++ b/cpp04/ex00/Dog.cpp @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Dog.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:50:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:54:33 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Dog.hpp" + +Dog::Dog() +{ + type = "Dog"; + std::cout << GREEN << "Dog default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +Dog::Dog(const Dog ©) : Animal(copy) +{ + std::cout << CYAN << "Dog copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +Dog& Dog::operator=(const Dog &operator_aff) +{ + Animal::operator=(operator_aff); + std::cout << MAGENTA << "Dog assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +Dog::~Dog() +{ + std::cout << RED << "Dog destructor called. Type was " << type << "." << RESET << std::endl; +} + +void Dog::makeSound() const +{ + std::cout << "Woof! Woof!" << std::endl; +} diff --git a/cpp04/ex00/Dog.hpp b/cpp04/ex00/Dog.hpp new file mode 100644 index 0000000..a038395 --- /dev/null +++ b/cpp04/ex00/Dog.hpp @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Dog.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:06:42 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:16:31 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef DOG_HPP +#define DOG_HPP + +#include "Animal.hpp" + +class Dog : public Animal +{ + public: + Dog(); + Dog(const Dog ©); + virtual Dog& operator=(const Dog &operator_aff); + virtual ~Dog(); + + void makeSound() const override; +}; + +#endif diff --git a/cpp04/ex00/Makefile b/cpp04/ex00/Makefile new file mode 100644 index 0000000..ddec2e7 --- /dev/null +++ b/cpp04/ex00/Makefile @@ -0,0 +1,66 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/31 13:03:33 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " __, ____, ____, ____, ____ ____, ___, ____,";\ + echo "(-| (-/_| (-| \ (-|_, (-|__) (-|_, (- / (-|_,";\ + echo " _|__, _/ |, _|__/ _|__, _|__) _|__, _/__, _|__,";\ + echo "( ( ( ( ( ( ( (" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = animal + +SRC = Animal.cpp \ + Cat.cpp \ + Dog.cpp \ + WrongAnimal.cpp \ + WrongCat.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./animal" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp04/ex00/WrongAnimal.cpp b/cpp04/ex00/WrongAnimal.cpp new file mode 100644 index 0000000..10d0e0b --- /dev/null +++ b/cpp04/ex00/WrongAnimal.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongAnimal.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:55:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:57:57 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "WrongAnimal.hpp" + +WrongAnimal::WrongAnimal() : type("WrongAnimal") +{ + std::cout << GREEN << "WrongAnimal default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +WrongAnimal::WrongAnimal(const WrongAnimal ©) : type(copy.type) +{ + std::cout << CYAN << "WrongAnimal copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +WrongAnimal& WrongAnimal::operator=(const WrongAnimal &operator_aff) +{ + if (this != &operator_aff) + { + this->type = operator_aff.type; + } + std::cout << MAGENTA << "WrongAnimal assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +WrongAnimal::~WrongAnimal() +{ + std::cout << RED << "WrongAnimal destructor called. Type was " << type << "." << RESET << std::endl; +} + +std::string WrongAnimal::getType() const +{ + return (this->type); +} + +void WrongAnimal::makeSound() const +{ + std::cout << "WrongAnimal makes a wrong sound!" << std::endl; +} diff --git a/cpp04/ex00/WrongAnimal.hpp b/cpp04/ex00/WrongAnimal.hpp new file mode 100644 index 0000000..1a0e2b2 --- /dev/null +++ b/cpp04/ex00/WrongAnimal.hpp @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongAnimal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:19:34 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:55:37 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef WRONGANIMAL_HPP +#define WRONGANIMAL_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class WrongAnimal +{ + protected: + std::string type; + + public: + WrongAnimal(); + WrongAnimal(const WrongAnimal ©); + WrongAnimal& operator=(const WrongAnimal &operator_aff); + ~WrongAnimal(); + + std::string getType() const; + void makeSound() const; +}; + +#endif diff --git a/cpp04/ex00/WrongCat.cpp b/cpp04/ex00/WrongCat.cpp new file mode 100644 index 0000000..d12add2 --- /dev/null +++ b/cpp04/ex00/WrongCat.cpp @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongCat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:58:15 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:59:48 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "WrongCat.hpp" + +WrongCat::WrongCat() +{ + type = "WrongCat"; + std::cout << GREEN << "WrongCat default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +WrongCat::WrongCat(const WrongCat ©) : WrongAnimal(copy) +{ + std::cout << CYAN << "WrongCat copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +WrongCat& WrongCat::operator=(const WrongCat &operator_aff) +{ + WrongAnimal::operator=(operator_aff); + std::cout << MAGENTA << "WrongCat assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +WrongCat::~WrongCat() +{ + std::cout << RED << "WrongCat destructor called. Type was " << type << "." << RESET << std::endl; +} + +void WrongCat::makeSound() const +{ + std::cout << "WrongCat makes a wrong sound!" << std::endl; +} diff --git a/cpp04/ex00/WrongCat.hpp b/cpp04/ex00/WrongCat.hpp new file mode 100644 index 0000000..83051bd --- /dev/null +++ b/cpp04/ex00/WrongCat.hpp @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongCat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:22:35 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:31:44 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef WRONGCAT_HPP +#define WRONGCAT_HPP + +#include "WrongAnimal.hpp" + +class WrongCat : public WrongAnimal +{ + public: + WrongCat(); + WrongCat(const WrongCat ©); + WrongCat& operator=(const WrongCat &operator_aff); + ~WrongCat(); + + void makeSound() const; +}; + +#endif diff --git a/cpp04/ex00/main.cpp b/cpp04/ex00/main.cpp new file mode 100644 index 0000000..fd22c31 --- /dev/null +++ b/cpp04/ex00/main.cpp @@ -0,0 +1,62 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 13:00:09 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 13:19:56 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Animal.hpp" +#include "Dog.hpp" +#include "Cat.hpp" +#include "WrongAnimal.hpp" +#include "WrongCat.hpp" + +int main() +{ + const Animal* meta = new Animal(); + const Animal* j = new Dog(); + const Animal* i = new Cat(); + + std::cout << j->getType() << " " << std::endl; + std::cout << i->getType() << " " << std::endl; + i->makeSound(); + j->makeSound(); + meta->makeSound(); + + delete meta; + delete j; + delete i; + + std::cout << "\n--- Tests WrongAnimal & WrongCat ---\n" << std::endl; + + const WrongAnimal* wrongMeta = new WrongAnimal(); + const WrongAnimal* wrongCat = new WrongCat(); + + std::cout << wrongCat->getType() << " " << std::endl; + wrongCat->makeSound(); + wrongMeta->makeSound(); + + delete wrongMeta; + delete wrongCat; + + std::cout << "\n--- Tests supplémentaires pour Dog & Cat ---\n" << std::endl; + + Dog dog1, dog2; + Cat cat1, cat2; + + dog1.makeSound(); + cat1.makeSound(); + + Dog dog3(dog1); + dog3.makeSound(); + + cat2 = cat1; + cat2.makeSound(); + + return (0); +} diff --git a/cpp04/ex01/.vscode/c_cpp_properties.json b/cpp04/ex01/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp04/ex01/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp04/ex01/.vscode/launch.json b/cpp04/ex01/.vscode/launch.json new file mode 100644 index 0000000..cf7a0a0 --- /dev/null +++ b/cpp04/ex01/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp04/ex01", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp04/ex01/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp04/ex01/.vscode/settings.json b/cpp04/ex01/.vscode/settings.json new file mode 100644 index 0000000..ebd8700 --- /dev/null +++ b/cpp04/ex01/.vscode/settings.json @@ -0,0 +1,105 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "files.associations": { + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/cpp04/ex01/Animal.cpp b/cpp04/ex01/Animal.cpp new file mode 100644 index 0000000..0dee674 --- /dev/null +++ b/cpp04/ex01/Animal.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Animal.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 19:25:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:06:06 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Animal.hpp" + +Animal::Animal() : type("Undefined") +{ + std::cout << GREEN << "Animal constructor called" << RESET << std::endl; +} + +Animal::Animal(const Animal ©) : type(copy.type) +{ + std::cout << GREEN << "Animal copy constructor called. Type is copied as " << type << "." << RESET << std::endl; +} + +Animal& Animal::operator=(const Animal &operator_aff)// Protection contre l'auto-affectation +{ + if (this != &operator_aff) + { + this->type = operator_aff.type; + } + std::cout << "Animal assignment operator called. Type is set to " << type << "." << std::endl; + return (*this); +} + +Animal::~Animal() +{ + std::cout << RED << "Animal destructor called" << RESET << std::endl; +} + +std::string Animal::getType() const +{ + return (this->type); +} + +void Animal::makeSound() const +{ + std::cout << MAGENTA << "Some animal sound!" << RESET << std::endl; +} diff --git a/cpp04/ex01/Animal.hpp b/cpp04/ex01/Animal.hpp new file mode 100644 index 0000000..e54cd80 --- /dev/null +++ b/cpp04/ex01/Animal.hpp @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Animal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 19:09:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:32:05 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef ANIMAL_HPP +#define ANIMAL_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class Animal +{ + protected: + std::string type; + + public: + Animal(); + Animal(const Animal ©); + virtual Animal& operator=(const Animal &operator_aff); + virtual ~Animal(); + + std::string getType() const; + virtual void makeSound() const; +}; + +#endif diff --git a/cpp04/ex01/Brain.cpp b/cpp04/ex01/Brain.cpp new file mode 100644 index 0000000..1de362b --- /dev/null +++ b/cpp04/ex01/Brain.cpp @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Brain.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 14:06:58 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 15:09:21 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Brain.hpp" + +Brain::Brain() +{ + // Initialisation des idées + for (int i = 0; i < 100; ++i) + { + ideas[i] = "Idea " + std::to_string(i); + //std::cout << GREEN << "Initialising Brain Idea #" << i << ": " << ideas[i] << RESET << std::endl; + } + std::cout << GREEN << "Brain constructed with 100 ideas." << RESET << std::endl; +} + +Brain::Brain(const Brain ©) +{ + *this = copy; + std::cout << CYAN << "Brain copy constructor called." << RESET << std::endl; +} + +Brain& Brain::operator=(const Brain &operator_aff) +{ + std::cout << MAGENTA << "Brain assignment operator called." << RESET << std::endl; + if (this != &operator_aff) + { + for (int i = 0; i < 100; ++i) + { + this->ideas[i] = operator_aff.ideas[i]; + std::cout << "Copying Idea #" << i << ": " << this->ideas[i] << std::endl; + } + } + return (*this); +} + +Brain::~Brain() +{ + std::cout << RED << "Brain destructor called" << RESET << std::endl; +} + +void Brain::setIdea(std::string idea, int i) +{ + this->ideas[i]=idea; +} + +std::string Brain::getIdea(int i) const +{ + return (this->ideas[i]); +} diff --git a/cpp04/ex01/Brain.hpp b/cpp04/ex01/Brain.hpp new file mode 100644 index 0000000..09880c3 --- /dev/null +++ b/cpp04/ex01/Brain.hpp @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Brain.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 14:01:08 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:32:17 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef BRAIN_HPP +#define BRAIN_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class Brain +{ + private: + std::string ideas[100]; + + public: + Brain(); + Brain(const Brain ©); + Brain& operator=(const Brain &operator_aff); + ~Brain(); + void setIdea(std::string idea, int i); + std::string getIdea(int i) const; +}; + +#endif diff --git a/cpp04/ex01/Cat.cpp b/cpp04/ex01/Cat.cpp new file mode 100644 index 0000000..3d0833a --- /dev/null +++ b/cpp04/ex01/Cat.cpp @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:52:48 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 15:26:47 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Cat.hpp" + +Cat::Cat() +{ + this->type = "Cat"; + this->brain = new Brain(); + std::cout << GREEN << "Cat default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +Cat::Cat(const Cat ©) : Animal(copy), brain(new Brain(*copy.brain)) +{ + std::cout << CYAN << "Cat copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +Cat& Cat::operator=(const Cat &operator_aff) +{ + Animal::operator=(operator_aff); + std::cout << MAGENTA << "Cat assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +Cat::~Cat() +{ + std::cout << RED << "Cat destructor called. Type was " << type << "." << RESET << std::endl; +} + +void Cat::makeSound() const +{ + std::cout << "Miaouhh! Miaouhh!" << std::endl; +} + +Brain* Cat::getBrain(void) const +{ + return (this->brain); +} diff --git a/cpp04/ex01/Cat.hpp b/cpp04/ex01/Cat.hpp new file mode 100644 index 0000000..11e5c20 --- /dev/null +++ b/cpp04/ex01/Cat.hpp @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:17:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 15:11:08 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CAT_HPP +#define CAT_HPP + +#include "Animal.hpp" +#include "Brain.hpp" + +class Cat : public Animal +{ + private: + Brain* brain; + + public: + Cat(); + Cat(const Cat ©); + virtual Cat& operator=(const Cat &operator_aff); + virtual ~Cat(); + + void makeSound() const override; + Brain* getBrain(void) const; +}; + +#endif diff --git a/cpp04/ex01/Dog.cpp b/cpp04/ex01/Dog.cpp new file mode 100644 index 0000000..e4f8c64 --- /dev/null +++ b/cpp04/ex01/Dog.cpp @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Dog.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:50:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 15:28:27 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Dog.hpp" + +Dog::Dog() +{ + this->type = "Dog"; + this->brain = new Brain(); + std::cout << GREEN << "Dog default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +Dog::Dog(const Dog ©) : Animal(copy), brain(new Brain(*copy.brain)) +{ + std::cout << CYAN << "Dog copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +Dog& Dog::operator=(const Dog &operator_aff) +{ + Animal::operator=(operator_aff); + std::cout << MAGENTA << "Dog assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +Dog::~Dog() +{ + std::cout << RED << "Dog destructor called. Type was " << type << "." << RESET << std::endl; +} + +void Dog::makeSound() const +{ + std::cout << "Woof! Woof!" << std::endl; +} + +Brain* Dog::getBrain(void) const +{ + return (this->brain); +} \ No newline at end of file diff --git a/cpp04/ex01/Dog.hpp b/cpp04/ex01/Dog.hpp new file mode 100644 index 0000000..ba9ee2e --- /dev/null +++ b/cpp04/ex01/Dog.hpp @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Dog.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:06:42 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 15:12:01 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef DOG_HPP +#define DOG_HPP + +#include "Animal.hpp" +#include "Brain.hpp" + +class Dog : public Animal +{ + private: + Brain* brain; + + public: + Dog(); + Dog(const Dog ©); + virtual Dog& operator=(const Dog &operator_aff); + virtual ~Dog(); + + void makeSound() const override; + Brain* getBrain(void) const; +}; + +#endif diff --git a/cpp04/ex01/Makefile b/cpp04/ex01/Makefile new file mode 100644 index 0000000..a593587 --- /dev/null +++ b/cpp04/ex01/Makefile @@ -0,0 +1,73 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/31 14:46:49 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " ██▓ ▄▄▄ ▓█████▄▓█████ ▄▄▄▄ ▓█████▒███████▓█████";\ + echo " ▓██▒ ▒████▄ ▒██▀ ██▓█ ▀▓█████▄▓█ ▀▒ ▒ ▒ ▄▀▓█ ▀";\ + echo " ▒██░ ▒██ ▀█▄ ░██ █▒███ ▒██▒ ▄█▒███ ░ ▒ ▄▀▒░▒███";\ + echo " ▒██░ ░██▄▄▄▄██░▓█▄ ▒▓█ ▄▒██░█▀ ▒▓█ ▄ ▄▀▒ ▒▓█ ▄";\ + echo " ░██████▓█ ▓██░▒████▓░▒████░▓█ ▀█░▒████▒███████░▒████▒";\ + echo " ░ ▒░▓ ▒▒ ▓▒█░▒▒▓ ▒░░ ▒░ ░▒▓███▀░░ ▒░ ░▒▒ ▓░▒░░░ ▒░ ░";\ + echo " ░ ░ ▒ ░▒ ▒▒ ░░ ▒ ▒ ░ ░ ▒░▒ ░ ░ ░ ░░▒ ▒ ░ ▒░ ░ ░";\ + echo " ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░";\ + echo " ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░";\ + echo " ░ ░ ░" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = brain + +SRC = Animal.cpp \ + Cat.cpp \ + Dog.cpp \ + WrongAnimal.cpp \ + WrongCat.cpp \ + Brain.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./brain" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp04/ex01/WrongAnimal.cpp b/cpp04/ex01/WrongAnimal.cpp new file mode 100644 index 0000000..10d0e0b --- /dev/null +++ b/cpp04/ex01/WrongAnimal.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongAnimal.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:55:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:57:57 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "WrongAnimal.hpp" + +WrongAnimal::WrongAnimal() : type("WrongAnimal") +{ + std::cout << GREEN << "WrongAnimal default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +WrongAnimal::WrongAnimal(const WrongAnimal ©) : type(copy.type) +{ + std::cout << CYAN << "WrongAnimal copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +WrongAnimal& WrongAnimal::operator=(const WrongAnimal &operator_aff) +{ + if (this != &operator_aff) + { + this->type = operator_aff.type; + } + std::cout << MAGENTA << "WrongAnimal assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +WrongAnimal::~WrongAnimal() +{ + std::cout << RED << "WrongAnimal destructor called. Type was " << type << "." << RESET << std::endl; +} + +std::string WrongAnimal::getType() const +{ + return (this->type); +} + +void WrongAnimal::makeSound() const +{ + std::cout << "WrongAnimal makes a wrong sound!" << std::endl; +} diff --git a/cpp04/ex01/WrongAnimal.hpp b/cpp04/ex01/WrongAnimal.hpp new file mode 100644 index 0000000..1a0e2b2 --- /dev/null +++ b/cpp04/ex01/WrongAnimal.hpp @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongAnimal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:19:34 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:55:37 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef WRONGANIMAL_HPP +#define WRONGANIMAL_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class WrongAnimal +{ + protected: + std::string type; + + public: + WrongAnimal(); + WrongAnimal(const WrongAnimal ©); + WrongAnimal& operator=(const WrongAnimal &operator_aff); + ~WrongAnimal(); + + std::string getType() const; + void makeSound() const; +}; + +#endif diff --git a/cpp04/ex01/WrongCat.cpp b/cpp04/ex01/WrongCat.cpp new file mode 100644 index 0000000..d12add2 --- /dev/null +++ b/cpp04/ex01/WrongCat.cpp @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongCat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:58:15 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:59:48 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "WrongCat.hpp" + +WrongCat::WrongCat() +{ + type = "WrongCat"; + std::cout << GREEN << "WrongCat default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +WrongCat::WrongCat(const WrongCat ©) : WrongAnimal(copy) +{ + std::cout << CYAN << "WrongCat copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +WrongCat& WrongCat::operator=(const WrongCat &operator_aff) +{ + WrongAnimal::operator=(operator_aff); + std::cout << MAGENTA << "WrongCat assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +WrongCat::~WrongCat() +{ + std::cout << RED << "WrongCat destructor called. Type was " << type << "." << RESET << std::endl; +} + +void WrongCat::makeSound() const +{ + std::cout << "WrongCat makes a wrong sound!" << std::endl; +} diff --git a/cpp04/ex01/WrongCat.hpp b/cpp04/ex01/WrongCat.hpp new file mode 100644 index 0000000..c65deeb --- /dev/null +++ b/cpp04/ex01/WrongCat.hpp @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongCat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:22:35 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:32:31 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef WRONGCAT_HPP +#define WRONGCAT_HPP + +#include "WrongAnimal.hpp" + +class WrongCat : public WrongAnimal +{ + public: + WrongCat(); + WrongCat(const WrongCat ©); + WrongCat& operator=(const WrongCat &operator_aff); + ~WrongCat(); + + void makeSound() const; +}; + +#endif diff --git a/cpp04/ex01/main.cpp b/cpp04/ex01/main.cpp new file mode 100644 index 0000000..c017596 --- /dev/null +++ b/cpp04/ex01/main.cpp @@ -0,0 +1,74 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 13:00:09 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 15:30:45 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Animal.hpp" +#include "Dog.hpp" +#include "Cat.hpp" + +int main() +{ + const Animal* j = new Dog(); + const Animal* i = new Cat(); + + delete j; + delete i; + + Animal* animals[10]; + + for (int i = 0; i < 10; i++) + { + if (i < 5) + { + animals[i] = new Dog(); + } + else + { + animals[i] = new Cat(); + } + } + + // Suppression des animaux + for (int i = 0; i < 10; i++) + { + delete animals[i]; + } + + // Test de copie profonde + Dog originalDog; + Dog copyDog(originalDog); + + std::cout << "\n--- Test Deep Copy for Cat ---\n" << std::endl; + + Cat originalCat; + originalCat.getBrain()->setIdea("Jouer avec une balle", 0); // Définir une idée + + // Copie profonde + Cat copyCat(originalCat); + + // Modifier l'original après la copie + originalCat.getBrain()->setIdea("Dormir sur le canapé", 0); + + // Afficher les idées pour vérifier la copie profonde + std::cout << "Original Cat's Idea #0: " << originalCat.getBrain()->getIdea(0) << std::endl; + std::cout << "Copy Cat's Idea #0: " << copyCat.getBrain()->getIdea(0) << std::endl; + + if (originalCat.getBrain()->getIdea(0) != copyCat.getBrain()->getIdea(0)) + { + std::cout << "Deep Copy Test Passed: Modifications to the original do not affect the copy." << std::endl; + } + else + { + std::cout << "Deep Copy Test Failed: Modifications to the original affect the copy." << std::endl; + } + + return (0); +} diff --git a/cpp04/ex02/.vscode/c_cpp_properties.json b/cpp04/ex02/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp04/ex02/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp04/ex02/.vscode/launch.json b/cpp04/ex02/.vscode/launch.json new file mode 100644 index 0000000..2898211 --- /dev/null +++ b/cpp04/ex02/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp04/ex02", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp04/ex02/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp04/ex02/.vscode/settings.json b/cpp04/ex02/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp04/ex02/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp04/ex02/AAnimal.cpp b/cpp04/ex02/AAnimal.cpp new file mode 100644 index 0000000..d03b8b6 --- /dev/null +++ b/cpp04/ex02/AAnimal.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* AAnimal.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 19:25:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:18:10 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "AAnimal.hpp" + +AAnimal::AAnimal() : type("Undefined") +{ + std::cout << GREEN << "AAnimal constructor called" << RESET << std::endl; +} + +AAnimal::AAnimal(const AAnimal ©) : type(copy.type) +{ + std::cout << GREEN << "AAnimal copy constructor called. Type is copied as " << type << "." << RESET << std::endl; +} + +AAnimal& AAnimal::operator=(const AAnimal &operator_aff)// Protection contre l'auto-affectation +{ + if (this != &operator_aff) + { + this->type = operator_aff.type; + } + std::cout << "AAnimal assignment operator called. Type is set to " << type << "." << std::endl; + return (*this); +} + +AAnimal::~AAnimal() +{ + std::cout << RED << "AAnimal destructor called" << RESET << std::endl; +} + +std::string AAnimal::getType() const +{ + return (this->type); +} + +void AAnimal::makeSound() const +{ + std::cout << MAGENTA << "Some animal sound!" << RESET << std::endl; +} diff --git a/cpp04/ex02/AAnimal.hpp b/cpp04/ex02/AAnimal.hpp new file mode 100644 index 0000000..48a15c5 --- /dev/null +++ b/cpp04/ex02/AAnimal.hpp @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* AAnimal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/30 19:09:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:19:56 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef AANIMAL_HPP +#define AANIMAL_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class AAnimal +{ + protected: + std::string type; + + public: + AAnimal(); + AAnimal(const AAnimal ©); + virtual AAnimal& operator=(const AAnimal &operator_aff); + virtual ~AAnimal(); + + std::string getType() const; + virtual void makeSound() const = 0; +}; + +#endif diff --git a/cpp04/ex02/Brain.cpp b/cpp04/ex02/Brain.cpp new file mode 100644 index 0000000..a97bb33 --- /dev/null +++ b/cpp04/ex02/Brain.cpp @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Brain.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 14:06:58 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:30:23 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Brain.hpp" + +Brain::Brain() +{ + // Initialisation des idées + for (int i = 0; i < 100; ++i) + { + ideas[i] = "Idea " + std::to_string(i); + //std::cout << GREEN << "Initialising Brain Idea #" << i << ": " << ideas[i] << RESET << std::endl; + } + std::cout << GREEN << "Brain constructed with 100 ideas." << RESET << std::endl; +} + +Brain::Brain(const Brain ©) +{ + *this = copy; + std::cout << CYAN << "Brain copy constructor called." << RESET << std::endl; +} + +Brain& Brain::operator=(const Brain &operator_aff) +{ + std::cout << MAGENTA << "Brain assignment operator called." << RESET << std::endl; + if (this != &operator_aff) + { + for (int i = 0; i < 100; ++i) + { + this->ideas[i] = operator_aff.ideas[i]; + //std::cout << "Copying Idea #" << i << ": " << this->ideas[i] << std::endl; + } + } + return (*this); +} + +Brain::~Brain() +{ + std::cout << RED << "Brain destructor called" << RESET << std::endl; +} + +void Brain::setIdea(std::string idea, int i) +{ + this->ideas[i]=idea; +} + +std::string Brain::getIdea(int i) const +{ + return (this->ideas[i]); +} diff --git a/cpp04/ex02/Brain.hpp b/cpp04/ex02/Brain.hpp new file mode 100644 index 0000000..19f039c --- /dev/null +++ b/cpp04/ex02/Brain.hpp @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Brain.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 14:01:08 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:18:37 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef BRAIN_HPP +#define BRAIN_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class Brain +{ + private: + std::string ideas[100]; + + public: + Brain(); + Brain(const Brain ©); + Brain& operator=(const Brain &operator_aff); + ~Brain(); + void setIdea(std::string idea, int i); + std::string getIdea(int i) const; +}; + +#endif diff --git a/cpp04/ex02/Cat.cpp b/cpp04/ex02/Cat.cpp new file mode 100644 index 0000000..0876639 --- /dev/null +++ b/cpp04/ex02/Cat.cpp @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:52:48 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:19:07 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Cat.hpp" + +Cat::Cat() +{ + this->type = "Cat"; + this->brain = new Brain(); + std::cout << GREEN << "Cat default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +Cat::Cat(const Cat ©) : AAnimal(copy), brain(new Brain(*copy.brain)) +{ + std::cout << CYAN << "Cat copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +Cat& Cat::operator=(const Cat &operator_aff) +{ + AAnimal::operator=(operator_aff); + std::cout << MAGENTA << "Cat assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +Cat::~Cat() +{ + std::cout << RED << "Cat destructor called. Type was " << type << "." << RESET << std::endl; +} + +void Cat::makeSound() const +{ + std::cout << "Miaouhh! Miaouhh!" << std::endl; +} + +Brain* Cat::getBrain(void) const +{ + return (this->brain); +} diff --git a/cpp04/ex02/Cat.hpp b/cpp04/ex02/Cat.hpp new file mode 100644 index 0000000..e73a111 --- /dev/null +++ b/cpp04/ex02/Cat.hpp @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:17:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:20:30 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CAT_HPP +#define CAT_HPP + +#include "AAnimal.hpp" +#include "Brain.hpp" + +class Cat : public AAnimal +{ + private: + Brain* brain; + + public: + Cat(); + Cat(const Cat ©); + virtual Cat& operator=(const Cat &operator_aff); + virtual ~Cat(); + + void makeSound() const override; + Brain* getBrain(void) const; +}; + +#endif diff --git a/cpp04/ex02/Dog.cpp b/cpp04/ex02/Dog.cpp new file mode 100644 index 0000000..82344dc --- /dev/null +++ b/cpp04/ex02/Dog.cpp @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Dog.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:50:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:19:31 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Dog.hpp" + +Dog::Dog() +{ + this->type = "Dog"; + this->brain = new Brain(); + std::cout << GREEN << "Dog default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +Dog::Dog(const Dog ©) : AAnimal(copy), brain(new Brain(*copy.brain)) +{ + std::cout << CYAN << "Dog copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +Dog& Dog::operator=(const Dog &operator_aff) +{ + AAnimal::operator=(operator_aff); + std::cout << MAGENTA << "Dog assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +Dog::~Dog() +{ + std::cout << RED << "Dog destructor called. Type was " << type << "." << RESET << std::endl; +} + +void Dog::makeSound() const +{ + std::cout << "Woof! Woof!" << std::endl; +} + +Brain* Dog::getBrain(void) const +{ + return (this->brain); +} \ No newline at end of file diff --git a/cpp04/ex02/Dog.hpp b/cpp04/ex02/Dog.hpp new file mode 100644 index 0000000..0fb1fe6 --- /dev/null +++ b/cpp04/ex02/Dog.hpp @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Dog.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:06:42 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:20:45 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef DOG_HPP +#define DOG_HPP + +#include "AAnimal.hpp" +#include "Brain.hpp" + +class Dog : public AAnimal +{ + private: + Brain* brain; + + public: + Dog(); + Dog(const Dog ©); + virtual Dog& operator=(const Dog &operator_aff); + virtual ~Dog(); + + void makeSound() const override; + Brain* getBrain(void) const; +}; + +#endif diff --git a/cpp04/ex02/Makefile b/cpp04/ex02/Makefile new file mode 100644 index 0000000..9af85e4 --- /dev/null +++ b/cpp04/ex02/Makefile @@ -0,0 +1,73 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/31 16:25:51 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " ██▓ ▄▄▄ ▓█████▄▓█████ ▄▄▄▄ ▓█████▒███████▓█████";\ + echo " ▓██▒ ▒████▄ ▒██▀ ██▓█ ▀▓█████▄▓█ ▀▒ ▒ ▒ ▄▀▓█ ▀";\ + echo " ▒██░ ▒██ ▀█▄ ░██ █▒███ ▒██▒ ▄█▒███ ░ ▒ ▄▀▒░▒███";\ + echo " ▒██░ ░██▄▄▄▄██░▓█▄ ▒▓█ ▄▒██░█▀ ▒▓█ ▄ ▄▀▒ ▒▓█ ▄";\ + echo " ░██████▓█ ▓██░▒████▓░▒████░▓█ ▀█░▒████▒███████░▒████▒";\ + echo " ░ ▒░▓ ▒▒ ▓▒█░▒▒▓ ▒░░ ▒░ ░▒▓███▀░░ ▒░ ░▒▒ ▓░▒░░░ ▒░ ░";\ + echo " ░ ░ ▒ ░▒ ▒▒ ░░ ▒ ▒ ░ ░ ▒░▒ ░ ░ ░ ░░▒ ▒ ░ ▒░ ░ ░";\ + echo " ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░";\ + echo " ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░";\ + echo " ░ ░ ░" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = abstract + +SRC = AAnimal.cpp \ + Cat.cpp \ + Dog.cpp \ + WrongAnimal.cpp \ + WrongCat.cpp \ + Brain.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./abstract" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp04/ex02/WrongAnimal.cpp b/cpp04/ex02/WrongAnimal.cpp new file mode 100644 index 0000000..10d0e0b --- /dev/null +++ b/cpp04/ex02/WrongAnimal.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongAnimal.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:55:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:57:57 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "WrongAnimal.hpp" + +WrongAnimal::WrongAnimal() : type("WrongAnimal") +{ + std::cout << GREEN << "WrongAnimal default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +WrongAnimal::WrongAnimal(const WrongAnimal ©) : type(copy.type) +{ + std::cout << CYAN << "WrongAnimal copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +WrongAnimal& WrongAnimal::operator=(const WrongAnimal &operator_aff) +{ + if (this != &operator_aff) + { + this->type = operator_aff.type; + } + std::cout << MAGENTA << "WrongAnimal assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +WrongAnimal::~WrongAnimal() +{ + std::cout << RED << "WrongAnimal destructor called. Type was " << type << "." << RESET << std::endl; +} + +std::string WrongAnimal::getType() const +{ + return (this->type); +} + +void WrongAnimal::makeSound() const +{ + std::cout << "WrongAnimal makes a wrong sound!" << std::endl; +} diff --git a/cpp04/ex02/WrongAnimal.hpp b/cpp04/ex02/WrongAnimal.hpp new file mode 100644 index 0000000..1a0e2b2 --- /dev/null +++ b/cpp04/ex02/WrongAnimal.hpp @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongAnimal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:19:34 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:55:37 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef WRONGANIMAL_HPP +#define WRONGANIMAL_HPP + +#include +#include + +#define RESET "\033[0m" +#define BLACK "\033[30m" +#define RED "\033[31m" +#define GREEN "\033[32m" +#define YELLOW "\033[33m" +#define BLUE "\033[34m" +#define MAGENTA "\033[35m" +#define CYAN "\033[36m" +#define WHITE "\033[37m" + +class WrongAnimal +{ + protected: + std::string type; + + public: + WrongAnimal(); + WrongAnimal(const WrongAnimal ©); + WrongAnimal& operator=(const WrongAnimal &operator_aff); + ~WrongAnimal(); + + std::string getType() const; + void makeSound() const; +}; + +#endif diff --git a/cpp04/ex02/WrongCat.cpp b/cpp04/ex02/WrongCat.cpp new file mode 100644 index 0000000..d12add2 --- /dev/null +++ b/cpp04/ex02/WrongCat.cpp @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongCat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:58:15 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 12:59:48 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "WrongCat.hpp" + +WrongCat::WrongCat() +{ + type = "WrongCat"; + std::cout << GREEN << "WrongCat default constructor called. Type is set to " << type << "." << RESET << std::endl; +} + +WrongCat::WrongCat(const WrongCat ©) : WrongAnimal(copy) +{ + std::cout << CYAN << "WrongCat copy constructor called. Type is " << type << "." << RESET << std::endl; +} + +WrongCat& WrongCat::operator=(const WrongCat &operator_aff) +{ + WrongAnimal::operator=(operator_aff); + std::cout << MAGENTA << "WrongCat assignment operator called. Type is now " << type << "." << RESET << std::endl; + return (*this); +} + +WrongCat::~WrongCat() +{ + std::cout << RED << "WrongCat destructor called. Type was " << type << "." << RESET << std::endl; +} + +void WrongCat::makeSound() const +{ + std::cout << "WrongCat makes a wrong sound!" << std::endl; +} diff --git a/cpp04/ex02/WrongCat.hpp b/cpp04/ex02/WrongCat.hpp new file mode 100644 index 0000000..37e9951 --- /dev/null +++ b/cpp04/ex02/WrongCat.hpp @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongCat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 12:22:35 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:21:11 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef WRONGCAT_HPP +#define WRONGCAT_HPP + +#include "WrongAnimal.hpp" + +class WrongCat : public WrongAnimal +{ + public: + WrongCat(); + WrongCat(const WrongCat ©); + WrongCat& operator=(const WrongCat &operator_aff); + ~WrongCat(); + + void makeSound() const; +}; + +#endif diff --git a/cpp04/ex02/main.cpp b/cpp04/ex02/main.cpp new file mode 100644 index 0000000..facabed --- /dev/null +++ b/cpp04/ex02/main.cpp @@ -0,0 +1,91 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 13:00:09 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:28:40 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "AAnimal.hpp" +#include "Dog.hpp" +#include "Cat.hpp" +// Ajoutez d'autres inclusions si nécessaire + +int main() +{ + // Tentative d'instanciation d'un Animal (doit échouer) + // AAnimal animal; // Décommentez pour vérifier que cela génère une erreur de compilation. + + // Création d'un tableau d'animaux + const int numAnimals = 4; + AAnimal* animals[numAnimals]; + + // Remplir le tableau avec des Dogs et Cats + for (int i = 0; i < numAnimals; ++i) + { + if (i % 2 == 0) + { + animals[i] = new Dog(); // Utilise Dog pour les indices pairs + } + else + { + animals[i] = new Cat(); // Utilise Cat pour les indices impairs + } + } + + // Faire du bruit avec chaque animal + for (int i = 0; i < numAnimals; ++i) + { + std::cout << "Animal #" << i + 1 << " sound: "; + animals[i]->makeSound(); + } + + // Libérer la mémoire allouée pour les animaux + for (int i = 0; i < numAnimals; ++i) + { + delete animals[i]; + } + + // Tests supplémentaires pour la copie profonde + std::cout << "\n--- Test Deep Copy ---\n"; + Dog originalDog; + Dog copyDog(originalDog); // Utiliser le constructeur de copie + originalDog.makeSound(); + copyDog.makeSound(); + std::cout << "\n--- Test Deep Copy for Cat ---\n" << std::endl; + + Cat originalCat; + originalCat.getBrain()->setIdea("Jouer avec une balle", 0); // Définir une idée + + // Copie profonde + Cat copyCat(originalCat); + + // Modifier l'original après la copie + originalCat.getBrain()->setIdea("Dormir sur le canapé", 0); + + // Afficher les idées pour vérifier la copie profonde + std::cout << "Original Cat's Idea #0: " << originalCat.getBrain()->getIdea(0) << std::endl; + std::cout << "Copy Cat's Idea #0: " << copyCat.getBrain()->getIdea(0) << std::endl; + + if (originalCat.getBrain()->getIdea(0) != copyCat.getBrain()->getIdea(0)) + { + std::cout << "Deep Copy Test Passed: Modifications to the original do not affect the copy." << std::endl; + } + else + { + std::cout << "Deep Copy Test Failed: Modifications to the original affect the copy." << std::endl; + } + + // Test de l'assignation + Dog anotherDog; + anotherDog = originalDog; // Utiliser l'opérateur d'assignation + anotherDog.makeSound(); + + + + return (0); +} diff --git a/cpp04/ex03/.vscode/c_cpp_properties.json b/cpp04/ex03/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..c2098a2 --- /dev/null +++ b/cpp04/ex03/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "linux-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "/usr/bin/gcc", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "linux-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/cpp04/ex03/.vscode/launch.json b/cpp04/ex03/.vscode/launch.json new file mode 100644 index 0000000..c57c86a --- /dev/null +++ b/cpp04/ex03/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": false, + "cwd": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp04/ex03", + "program": "/home/fgras-ca/Bureau/fgras-ca/CPP/cpp04/ex03/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/cpp04/ex03/.vscode/settings.json b/cpp04/ex03/.vscode/settings.json new file mode 100644 index 0000000..3e5eb95 --- /dev/null +++ b/cpp04/ex03/.vscode/settings.json @@ -0,0 +1,59 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false +} \ No newline at end of file diff --git a/cpp04/ex03/AMateria.cpp b/cpp04/ex03/AMateria.cpp new file mode 100644 index 0000000..0676ff5 --- /dev/null +++ b/cpp04/ex03/AMateria.cpp @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* AMateria.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 16:47:27 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:48:56 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "AMateria.hpp" + +AMateria::AMateria(std::string const & type) : type(type) {} + +AMateria::~AMateria() {} + +std::string const & AMateria::getType() const +{ + return (this->type); +} + +void AMateria::use(ICharacter& target) +{ + std::cout << "* uses some unknown materia on " << target.getName() << " *" << std::endl; +} diff --git a/cpp04/ex03/AMateria.hpp b/cpp04/ex03/AMateria.hpp new file mode 100644 index 0000000..6ecf210 --- /dev/null +++ b/cpp04/ex03/AMateria.hpp @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* AMateria.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 16:44:47 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:09:18 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef AMATERIA_HPP +#define AMATERIA_HPP + +#include "ICharacter.hpp" +#include +#include + +class AMateria +{ + protected: + std::string type; + + public: + AMateria(std::string const & type); + virtual ~AMateria(); + + std::string const & getType() const; // Renvoie le type de la materia + virtual AMateria* clone() const = 0; // Doit être implémenté dans les sous-classes + virtual void use(ICharacter& target); // Peut être redéfini dans les sous-classes +}; + +#endif diff --git a/cpp04/ex03/AMateria.o b/cpp04/ex03/AMateria.o new file mode 100644 index 0000000000000000000000000000000000000000..103ca59a41d1b0e0318e9a7520fafad8f6bf1974 GIT binary patch literal 5248 zcmbtYU2IfE6rQ#SsDKs!s-RqAVt~lHx3qvtNTF=m4W%^QLWF>~x7*ux!**}8_ihD3 zrA-ZS(^N?`(FbGj=KV43O0>7t*3<}=8nIo>*BBLIY{h)JMHX8`gLp#f-cR)hD1rANrDdwTobtaP zdgh<~$Bk#rJ#%?_0e2y9 z;?mM&>02h8S-_AkqIUSXxDI|5;qvsnJ|crI**jA9o2H-}DCip$^h|Qt5$;oION>@3gGs(##vv+p9GG8fUeo)S8_yJNqo72*=GI!cg7qfFGC=n^%@>T6alTe9>F^?5bnNRVy# zBv#a)u5DeuI3NY8qD|tI+my=fgY)f&fs?#|5A*xy+fM=~c^n^Z-y5}C1bqOUWE>xE zPfXO+YB5|w8_5BDSf@5JVi7b$3GyU9+};`a08~vd?Tf@MS^*2Cj#?^7omjE}#&J-i z;jqh6CoqzC%F|S>CHu`vQTB_ly$YXHxa<#M7~_>%Jlm)a`IypLffFZ^xXM4H9P7c9 zKMAO0r-}RlXS;H)NjE`wB|E38=wnU6PF^{dYl6xjRk3qk>3^v7D)@TZ2$kZWs)Bz~1;1Ve|BLXo@|2GPWMBUhZmF2{te!R`>*)Aq!q*Di5Ru^i zfb6QGe;7FVFeO_>f4mAV`22}whKGf7C>^$Mb)2l9&1XZZHrb97gl?G4I6$&)E_;G% ze%^8OeNLYjgoR>8*5lc%aCW!v+qt8iD8*hU^c%IGJO|Y};<^ zbpx_W2D15qR3;tTc4p8mIAOufhCwQmNW1h&Bq)gP17$N*y9*<&HaSl>IbfGfN$@U= zA)|a`q|gkmQE0R$IkWyCXHhE@_o5VtE5uY%I{`5-)TP=Bs$x= z(tg^Jiz!teMS->GI>W_+=Zs_vVbRTzv+e^Oc3iGfw>LXt+gPzVHwc`N2Ap<5zc0-|jwqX3KhCia=*Avm2m9PzBt^xx3zTN=(U0W|a7PDNqiLjwFMS&BaER2le64d){8Rh0Nn z(e3kCvMzGyW32goVNn?Z42h*h6&UAtL63p+JwImPe4n2+aK6vKHgJ9i{c7MGr-%i| zheEfP@~{x)gIp?jIX6ZdC={_iH*`g;HwZ+m;71kNieijPgvRc?P=LCUr?qQmgt7yc zw&f!hu0+Qz6x`z?mhp#%ygY@F_d_p6PwCzi?`U~!m zCt?Eyzc{S=eXrS1WZ>ZnMp_ic=Lz;8&KK-Q2)l|trkkUjHw6JjN-#T^f(@z8Ib2FK?QqUmqn%{ z)o6qxo+lhOtMN^JvyOK+Fw@;q1w2b_x^VoAZKneGb%uess>fMT(h@bmOMJaD8|5#tTKo`RK zd95rP)aQaR9^A$}u75!V{JJ&OKUaXoiYn*$8UCIMuxawIF<>|}`B#WrY5Z=g@jIs+ zVf^s!U_OsuCEuW2Qxn>ta{SH&*W}|&H0PcmaZ?>gZyAk7cjVb?sDLisS3m83k+u1c G$^Q>ykvKB| literal 0 HcmV?d00001 diff --git a/cpp04/ex03/Character.cpp b/cpp04/ex03/Character.cpp new file mode 100644 index 0000000..4fafb92 --- /dev/null +++ b/cpp04/ex03/Character.cpp @@ -0,0 +1,82 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Character.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 16:58:59 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:28:36 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Character.hpp" +#include "AMateria.hpp" + +Character::Character(std::string name) : name(name) +{ + for (int i = 0; i < 4; ++i) + { + inventory[i] = nullptr; + } +} + +Character::Character(const Character& other) +{ + *this = other; +} + +Character& Character::operator=(const Character& other) +{ + if (this != &other) + { + name = other.name; + for (int i = 0; i < 4; ++i) + { + delete inventory[i]; // Assurez-vous de libérer la mémoire de l'inventaire actuel + inventory[i] = other.inventory[i] ? other.inventory[i]->clone() : nullptr; + } + } + return (*this); +} + +Character::~Character() +{ + for (int i = 0; i < 4; ++i) + { + delete inventory[i]; + } +} + +std::string const & Character::getName() const +{ + return (name); +} + +void Character::equip(AMateria* m) +{ + for (int i = 0; i < 4; ++i) + { + if (!inventory[i]) + { + inventory[i] = m; + break; + } + } +} + +void Character::unequip(int idx) +{ + if (idx >= 0 && idx < 4) + { + inventory[idx] = nullptr; + } +} + +void Character::use(int idx, ICharacter& target) +{ + if (idx >= 0 && idx < 4 && inventory[idx]) + { + inventory[idx]->use(target); + } +} diff --git a/cpp04/ex03/Character.hpp b/cpp04/ex03/Character.hpp new file mode 100644 index 0000000..c9bec8f --- /dev/null +++ b/cpp04/ex03/Character.hpp @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Character.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 16:58:01 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:58:40 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CHARACTER_HPP +#define CHARACTER_HPP + +#include "ICharacter.hpp" + +class Character : public ICharacter +{ + private: + std::string name; + AMateria* inventory[4]; // Inventaire avec 4 emplacements pour les Materias + + public: + Character(std::string name); + Character(const Character& other); + Character& operator=(const Character& other); + virtual ~Character(); + + virtual std::string const & getName() const override; + virtual void equip(AMateria* m) override; + virtual void unequip(int idx) override; + virtual void use(int idx, ICharacter& target) override; +}; + +#endif diff --git a/cpp04/ex03/Character.o b/cpp04/ex03/Character.o new file mode 100644 index 0000000000000000000000000000000000000000..eb50065d0a8abdae8c9bd94cfe41d884b6065d26 GIT binary patch literal 9424 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 literal 0 HcmV?d00001 diff --git a/cpp04/ex03/Cure.cpp b/cpp04/ex03/Cure.cpp new file mode 100644 index 0000000..7f1f136 --- /dev/null +++ b/cpp04/ex03/Cure.cpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cure.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 17:03:56 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:04:37 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Cure.hpp" + +Cure::Cure() : AMateria("cure") {} + +Cure::Cure(const Cure& other) : AMateria(other) {} + +Cure& Cure::operator=(const Cure& other) +{ + AMateria::operator=(other); + return (*this); +} + +Cure::~Cure() {} + +AMateria* Cure::clone() const +{ + return new Cure(*this); +} + +void Cure::use(ICharacter& target) +{ + std::cout << "* heals " << target.getName() << "’s wounds *" << std::endl; +} diff --git a/cpp04/ex03/Cure.hpp b/cpp04/ex03/Cure.hpp new file mode 100644 index 0000000..d53cc88 --- /dev/null +++ b/cpp04/ex03/Cure.hpp @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cure.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 17:03:19 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:03:43 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef CURE_HPP +#define CURE_HPP + +#include "AMateria.hpp" + +class Cure : public AMateria +{ + public: + Cure(); + Cure(const Cure& other); + Cure& operator=(const Cure& other); + virtual ~Cure(); + + virtual AMateria* clone() const override; + virtual void use(ICharacter& target) override; +}; + +#endif diff --git a/cpp04/ex03/Cure.o b/cpp04/ex03/Cure.o new file mode 100644 index 0000000000000000000000000000000000000000..029640a8452deb3da8b5aae8adf93e0ec73ef173 GIT binary patch literal 15568 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 16:52:43 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:25:11 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef ICHARACTER_HPP +#define ICHARACTER_HPP + +#include + +class AMateria; + +class ICharacter +{ + public: + virtual ~ICharacter() {} + + virtual std::string const & getName() const = 0; // Doit retourner le nom du personnage + virtual void equip(AMateria* m) = 0; // Équipe une AMateria + virtual void unequip(int idx) = 0; // Déséquipe une AMateria sans la détruire + virtual void use(int idx, ICharacter& target) = 0; // Utilise une AMateria sur un ICharacter +}; + +#endif diff --git a/cpp04/ex03/IMateriaSource.hpp b/cpp04/ex03/IMateriaSource.hpp new file mode 100644 index 0000000..a262bc7 --- /dev/null +++ b/cpp04/ex03/IMateriaSource.hpp @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* IMateriaSource.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 17:06:19 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:07:06 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef IMATERIASOURCE_HPP +#define IMATERIASOURCE_HPP + +#include "AMateria.hpp" + +class IMateriaSource +{ + public: + virtual ~IMateriaSource() {} + virtual void learnMateria(AMateria*) = 0; + virtual AMateria* createMateria(std::string const & type) = 0; +}; + +#endif diff --git a/cpp04/ex03/Ice.cpp b/cpp04/ex03/Ice.cpp new file mode 100644 index 0000000..c9370c7 --- /dev/null +++ b/cpp04/ex03/Ice.cpp @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Ice.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 16:49:57 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:50:52 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Ice.hpp" + +Ice::Ice() : AMateria("ice") {} + +Ice::Ice(const Ice& other) : AMateria(other) {} + +Ice& Ice::operator=(const Ice& other) +{ + AMateria::operator=(other); + return (*this); +} + +Ice::~Ice() {} + +AMateria* Ice::clone() const +{ + return new Ice(*this); +} + +void Ice::use(ICharacter& target) +{ + std::cout << "* shoots an ice bolt at " << target.getName() << " *" << std::endl; +} diff --git a/cpp04/ex03/Ice.hpp b/cpp04/ex03/Ice.hpp new file mode 100644 index 0000000..a351e66 --- /dev/null +++ b/cpp04/ex03/Ice.hpp @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Ice.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 16:49:13 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 16:49:44 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef ICE_HPP +#define ICE_HPP + +#include "AMateria.hpp" + +class Ice : public AMateria +{ + public: + Ice(); + Ice(const Ice& other); + Ice& operator=(const Ice& other); + virtual ~Ice(); + + virtual AMateria* clone() const override; + virtual void use(ICharacter& target) override; +}; + +#endif diff --git a/cpp04/ex03/Ice.o b/cpp04/ex03/Ice.o new file mode 100644 index 0000000000000000000000000000000000000000..4355332eb5707fd8f924dc14524e8e8b36b4d0a9 GIT binary patch literal 15552 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 literal 0 HcmV?d00001 diff --git a/cpp04/ex03/Makefile b/cpp04/ex03/Makefile new file mode 100644 index 0000000..42bbaf5 --- /dev/null +++ b/cpp04/ex03/Makefile @@ -0,0 +1,72 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: fgras-ca +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2023/12/27 20:57:42 by fgras-ca #+# #+# # +# Updated: 2023/12/31 17:14:41 by fgras-ca ### ########.fr # +# # +# **************************************************************************** # + +LOGO = @echo " ██▓ ▄▄▄ ▓█████▄▓█████ ▄▄▄▄ ▓█████▒███████▓█████";\ + echo " ▓██▒ ▒████▄ ▒██▀ ██▓█ ▀▓█████▄▓█ ▀▒ ▒ ▒ ▄▀▓█ ▀";\ + echo " ▒██░ ▒██ ▀█▄ ░██ █▒███ ▒██▒ ▄█▒███ ░ ▒ ▄▀▒░▒███";\ + echo " ▒██░ ░██▄▄▄▄██░▓█▄ ▒▓█ ▄▒██░█▀ ▒▓█ ▄ ▄▀▒ ▒▓█ ▄";\ + echo " ░██████▓█ ▓██░▒████▓░▒████░▓█ ▀█░▒████▒███████░▒████▒";\ + echo " ░ ▒░▓ ▒▒ ▓▒█░▒▒▓ ▒░░ ▒░ ░▒▓███▀░░ ▒░ ░▒▒ ▓░▒░░░ ▒░ ░";\ + echo " ░ ░ ▒ ░▒ ▒▒ ░░ ▒ ▒ ░ ░ ▒░▒ ░ ░ ░ ░░▒ ▒ ░ ▒░ ░ ░";\ + echo " ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░";\ + echo " ░ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░";\ + echo " ░ ░ ░" + +DEF_COLOR = \033[0m +GRAY = \033[0;90m +RED = \033[0;91m +GREEN = \033[0;92m +YELLOW = \033[0;93m +BLUE = \033[0;94m +MAGENTA = \033[0;95m +CYAN = \033[0;96m +WHITE = \033[0;97m +ORANGE = \033[38;5;214m + +NAME = materia + +SRC = AMateria.cpp \ + Character.cpp \ + Cure.cpp \ + Ice.cpp \ + MateriaSource.cpp \ + main.cpp \ + +OBJS = ${SRC:.cpp=.o} + +CC = c++ +CFLAGS = -Wall -Werror -Wextra -std=c++98 +RM = rm -f + +all : $(NAME) + +$(NAME) : $(OBJS) + @echo "$(RED)Compilation fixed... $(DEF_COLOR)" + $(CC) $(CFLAGS) $(OBJS) -g -o $(NAME) + @echo "$(GREEN)Compilation complete. $(ORANGE)Type "./materia" to execute the program!!$(DEF_COLOR)" + $(LOGO) + +clean : + @echo "$(RED)Deleating files objects... $(DEF_COLOR)" + $(RM) $(OBJS) + @echo "$(GREEN)files deleted!! $(DEF_COLOR)" + $(LOGO) + +fclean : clean + @echo "$(RED)Delete program name... $(DEF_COLOR)" + $(RM) $(NAME) + @echo "$(GREEN)File program deleted!! $(DEF_COLOR)" + $(LOGO) + +re : fclean all + +.PHONY : all clean fclean re \ No newline at end of file diff --git a/cpp04/ex03/MateriaSource.cpp b/cpp04/ex03/MateriaSource.cpp new file mode 100644 index 0000000..78550b7 --- /dev/null +++ b/cpp04/ex03/MateriaSource.cpp @@ -0,0 +1,68 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* MateriaSource.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 17:08:37 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:11:59 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "MateriaSource.hpp" + +MateriaSource::MateriaSource() +{ + materias.fill(nullptr); +} + +MateriaSource::MateriaSource(const MateriaSource& other) +{ + *this = other; +} + +MateriaSource& MateriaSource::operator=(const MateriaSource& other) +{ + if (this != &other) + { + for (int i = 0; i < 4; ++i) + { + delete materias[i]; + materias[i] = other.materias[i] ? other.materias[i]->clone() : nullptr; + } + } + return (*this); +} + +MateriaSource::~MateriaSource() +{ + for (auto& materia : materias) + { + delete materia; + } +} + +void MateriaSource::learnMateria(AMateria* m) +{ + for (auto& materia : materias) + { + if (!materia) + { + materia = m; + break; + } + } +} + +AMateria* MateriaSource::createMateria(std::string const & type) +{ + for (auto& materia : materias) + { + if (materia && materia->getType() == type) + { + return materia->clone(); + } + } + return (nullptr); +} diff --git a/cpp04/ex03/MateriaSource.hpp b/cpp04/ex03/MateriaSource.hpp new file mode 100644 index 0000000..f11655c --- /dev/null +++ b/cpp04/ex03/MateriaSource.hpp @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* MateriaSource.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 17:07:33 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:08:05 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef MATERIASOURCE_HPP +#define MATERIASOURCE_HPP + +#include "IMateriaSource.hpp" +#include + +class MateriaSource : public IMateriaSource +{ + private: + std::array materias; // Peut contenir jusqu'à 4 types de Materias + + public: + MateriaSource(); + MateriaSource(const MateriaSource& other); + MateriaSource& operator=(const MateriaSource& other); + virtual ~MateriaSource(); + + virtual void learnMateria(AMateria* m) override; + virtual AMateria* createMateria(std::string const & type) override; +}; + +#endif diff --git a/cpp04/ex03/MateriaSource.o b/cpp04/ex03/MateriaSource.o new file mode 100644 index 0000000000000000000000000000000000000000..c964909391283724485ac421b5239dddde567702 GIT binary patch literal 18040 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 literal 0 HcmV?d00001 diff --git a/cpp04/ex03/main.cpp b/cpp04/ex03/main.cpp new file mode 100644 index 0000000..f0a7cf3 --- /dev/null +++ b/cpp04/ex03/main.cpp @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/12/31 17:14:54 by fgras-ca #+# #+# */ +/* Updated: 2023/12/31 17:36:22 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "MateriaSource.hpp" +#include "Character.hpp" +#include "Ice.hpp" +#include "Cure.hpp" + +int main() +{ + IMateriaSource* src = new MateriaSource(); + src->learnMateria(new Ice()); + src->learnMateria(new Cure()); + ICharacter* me = new Character("me"); + ICharacter* bob = new Character("bob"); + + std::string input; + while (true) + { + std::cout << "Enter command (equip, use, or quit): "; + std::cin >> input; + + if (input == "equip") + { + std::string materiaType; + std::cout << "Enter materia type (ice or cure): "; + std::cin >> materiaType; + AMateria* tmp = src->createMateria(materiaType); + if (tmp) + { + me->equip(tmp); + std::cout << materiaType << " equipped." << std::endl; + } + else + { + std::cout << "Unknown materia type." << std::endl; + } + } + else if (input == "use") + { + int idx; + std::cout << "Enter inventory index (0-3): "; + std::cin >> idx; + me->use(idx, *bob); + } + else if (input == "quit") + { + break; + } + else + { + std::cout << "Unknown command." << std::endl; + } + } + + delete bob; + delete me; + delete src; + + return (0); +} diff --git a/cpp04/ex03/main.o b/cpp04/ex03/main.o new file mode 100644 index 0000000000000000000000000000000000000000..b25cbf401684b0d9025b7e66941204175172a621 GIT binary patch literal 15640 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 BWo-Ze literal 0 HcmV?d00001