narnaud 3 years ago
parent
commit
52ccde2693
  1. 20
      CPP01/ex00/Makefile
  2. 28
      CPP01/ex00/Zombie.cpp
  3. 37
      CPP01/ex00/Zombie.hpp
  4. 24
      CPP01/ex00/main.cpp
  5. 19
      CPP01/ex00/newZombie.cpp
  6. 19
      CPP01/ex00/randomChump.cpp
  7. 19
      CPP01/ex01/Makefile
  8. 35
      CPP01/ex01/Zombie.cpp
  9. 39
      CPP01/ex01/Zombie.hpp
  10. BIN
      CPP01/ex01/apocalypse
  11. 26
      CPP01/ex01/main.cpp
  12. 25
      CPP01/ex01/zombieHorde.cpp
  13. 31
      CPP01/ex02/main.cpp
  14. 20
      CPP01/ex03/HumanA.cpp
  15. 28
      CPP01/ex03/HumanA.hpp
  16. 33
      CPP01/ex03/HumanB.cpp
  17. 30
      CPP01/ex03/HumanB.hpp
  18. 21
      CPP01/ex03/Makefile
  19. 26
      CPP01/ex03/Weapon.cpp
  20. 33
      CPP01/ex03/Weapon.hpp
  21. 34
      CPP01/ex03/main.cpp
  22. 54
      CPP01/ex04/main.cpp
  23. 66
      CPP01/ex05/Harl.cpp
  24. 34
      CPP01/ex05/Harl.hpp
  25. 23
      CPP01/ex05/main.cpp

20
CPP01/ex00/Makefile

@ -0,0 +1,20 @@
NAME = apocalypse
SRCS = main.cpp Zombie.cpp newZombie.cpp randomChump.cpp
OBJS = $(SRCS:.cpp=.o)
CXXFLAGS = -std=c++98 -Werror -Wextra -Wall
$(NAME): $(OBJS)
c++ $(OBJS) -o $(NAME)
all: $(NAME)
clean:
rm -rf $(OBJS)
fclean: clean
rm -rf $(NAME)
re: fclean all
.PHONY: all clean re

28
CPP01/ex00/Zombie.cpp

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Zombie.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 08:53:11 by narnaud #+# #+# */
/* Updated: 2022/06/14 09:45:30 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Zombie.hpp"
Zombie::Zombie(string name):_name(name)
{
cout << "*" << name << " died.*\n";
}
Zombie::~Zombie(void)
{
cout << "*" << this->_name << " really died.*\n";
}
void Zombie::announce(void) const
{
cout << this->_name << ": BraiiiiiiinnnzzzZ...\n";
}

37
CPP01/ex00/Zombie.hpp

@ -0,0 +1,37 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Zombie.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 08:02:30 by narnaud #+# #+# */
/* Updated: 2022/06/14 09:49:11 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef ZOMBIE_HPP
# define ZOMBIE_HPP
# ifndef DEBUG
# define DEBUG 0
# endif
#include <iostream>
using std::cin;
using std::cout;
using std::string;
class Zombie
{
public:
Zombie(string name);
~Zombie();
void announce(void) const;
private:
string _name;
};
Zombie *newZombie(string name);
void randomChump(string name);
#endif

24
CPP01/ex00/main.cpp

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 07:59:29 by narnaud #+# #+# */
/* Updated: 2022/06/14 09:46:09 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
# include "Zombie.hpp"
int main(void)
{
Zombie *marc = newZombie("Marc");
marc->announce();
delete marc;
randomChump("Aurel");
if (DEBUG)
system("leaks apocalypse");
return (EXIT_SUCCESS);
}

19
CPP01/ex00/newZombie.cpp

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* newZombie.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 08:17:02 by narnaud #+# #+# */
/* Updated: 2022/06/14 09:43:58 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Zombie.hpp"
Zombie *newZombie(string name)
{
Zombie *ret = new Zombie(name);
return (ret);
}

19
CPP01/ex00/randomChump.cpp

@ -0,0 +1,19 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* randomChump.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 08:18:57 by narnaud #+# #+# */
/* Updated: 2022/06/14 09:43:58 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Zombie.hpp"
void randomChump(string name)
{
Zombie zomb = Zombie(name);
zomb.announce();
}

19
CPP01/ex01/Makefile

@ -0,0 +1,19 @@
NAME = apocalypse
SRCS = main.cpp Zombie.cpp zombieHorde.cpp
OBJS = $(SRCS:.cpp=.o)
CXXFLAGS = -g -std=c++98 -Werror -Wextra -Wall
$(NAME): $(OBJS)
c++ $(OBJS) -o $(NAME)
all: $(NAME)
clean:
rm -rf $(OBJS)
fclean: clean
rm -rf $(NAME)
re: clean all
.PHONY: all clean fclean re

35
CPP01/ex01/Zombie.cpp

@ -0,0 +1,35 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Zombie.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 08:53:11 by narnaud #+# #+# */
/* Updated: 2022/06/16 12:43:16 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Zombie.hpp"
Zombie::Zombie(){}
Zombie::Zombie(string name):_name(name)
{
cout << "*" << _name << " died.*\n";
}
Zombie::~Zombie(void)
{
cout << "*" << _name << " really died.*\n";
}
void Zombie::announce(void) const
{
cout << _name << ": BraiiiiiiinnnzzzZ...\n";
}
void Zombie::setName(string name)
{
_name = name;
}

39
CPP01/ex01/Zombie.hpp

@ -0,0 +1,39 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Zombie.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 08:02:30 by narnaud #+# #+# */
/* Updated: 2022/06/16 12:27:01 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef ZOMBIE_HPP
# define ZOMBIE_HPP
# ifndef DEBUG
# define DEBUG 0
# endif
# define ZB_AMOUNT 8
#include <iostream>
using std::cin;
using std::cout;
using std::string;
class Zombie
{
public:
Zombie(void);
Zombie(string name);
~Zombie();
void announce(void) const;
void setName(string name);
private:
string _name;
};
Zombie *zombieHorde(int amount, string name);
#endif

BIN
CPP01/ex01/apocalypse

Binary file not shown.

26
CPP01/ex01/main.cpp

@ -0,0 +1,26 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 07:59:29 by narnaud #+# #+# */
/* Updated: 2022/06/16 12:44:26 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
# include "Zombie.hpp"
int main(void)
{
Zombie *zombs = zombieHorde(ZB_AMOUNT, "Zombie");
int i = 0;
while (i < ZB_AMOUNT)
zombs[i++].announce();
delete [] zombs;
if (DEBUG)
system("leaks apocalypse");
return (EXIT_SUCCESS);
}

25
CPP01/ex01/zombieHorde.cpp

@ -0,0 +1,25 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* zombieHorde.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 08:17:02 by narnaud #+# #+# */
/* Updated: 2022/06/16 12:47:20 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Zombie.hpp"
Zombie *zombieHorde(int N, string name)
{
Zombie *ret = new Zombie[N];
int n = 0;
while (n < N)
{
ret[n].setName(name + std::to_string(n));
n++;
}
return (ret);
}

31
CPP01/ex02/main.cpp

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 11:01:07 by narnaud #+# #+# */
/* Updated: 2022/06/14 11:08:21 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include <iostream>
using std::string;
using std::cout;
using std::endl;
int main(void)
{
string str = "HI THIS IS BRAIN";
string *stringPTR = &str;
string &stringREF = str;
cout << &str << endl;
cout << stringPTR << endl;
cout << &stringREF << endl;
cout << str << endl;
cout << *stringPTR << endl;
cout << stringREF << endl;
}

20
CPP01/ex03/HumanA.cpp

@ -0,0 +1,20 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* HumanA.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 13:34:06 by narnaud #+# #+# */
/* Updated: 2022/06/16 10:10:29 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "HumanA.hpp"
HumanA::HumanA(string name, Weapon & weap ):_name(name),_weapon(weap){}
void HumanA::attack(void) const
{
std::cout << _name << " attacks with their " << _weapon.getType() << endl;
}

28
CPP01/ex03/HumanA.hpp

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* HumanA.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 12:52:11 by narnaud #+# #+# */
/* Updated: 2022/06/16 10:33:40 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef HUMANA_HPP
# define HUMANA_HPP
# include "Weapon.hpp"
class HumanA
{
public:
HumanA(string name, Weapon &weap);
void attack(void) const;
private:
string _name;
Weapon &_weapon;
};
#endif

33
CPP01/ex03/HumanB.cpp

@ -0,0 +1,33 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* HumanB.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/16 09:13:28 by narnaud #+# #+# */
/* Updated: 2022/06/16 10:12:56 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "HumanB.hpp"
HumanB::HumanB(string name):_name(name), _weapon(NULL){}
HumanB::HumanB(string name, Weapon &weap):_name(name), _weapon(&weap){}
void HumanB::attack(void) const
{
std::cout << _name << " attacks with their ";
if (_weapon)
cout << _weapon->getType() << endl;
else
cout << "fists\n";
}
void HumanB::setWeapon(Weapon &weap)
{
_weapon = &weap;
}

30
CPP01/ex03/HumanB.hpp

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* HumanB.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 12:54:11 by narnaud #+# #+# */
/* Updated: 2022/06/16 10:33:28 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef HUMANB_HPP
# define HUMANB_HPP
# include "Weapon.hpp"
class HumanB
{
public:
HumanB(string name);
HumanB(string name, Weapon &weap);
void attack(void) const;
void setWeapon(Weapon &weap);
private:
string _name;
Weapon *_weapon;
};
#endif

21
CPP01/ex03/Makefile

@ -0,0 +1,21 @@
NAME = warfare
SRCS = main.cpp Weapon.cpp HumanA.cpp HumanB.cpp
OBJS = $(SRCS:.cpp=.o)
CXXFLAGS = -std=c++98 -Werror -Wextra -Wall
$(NAME): $(OBJS)
c++ $(OBJS) -o $(NAME)
all: $(NAME)
clean:
rm -rf $(OBJS)
fclean: clean
rm -rf $(NAME)
re: fclean all
.PHONY: all clean fclean re

26
CPP01/ex03/Weapon.cpp

@ -0,0 +1,26 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Weapon.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 12:51:23 by narnaud #+# #+# */
/* Updated: 2022/06/16 10:08:02 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Weapon.hpp"
Weapon::Weapon(string type):_type(type){}
const string &Weapon::getType(void) const
{
return (this->_type);
}
void Weapon::setType(string type)
{
this->_type = type;
}

33
CPP01/ex03/Weapon.hpp

@ -0,0 +1,33 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Weapon.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 12:50:31 by narnaud #+# #+# */
/* Updated: 2022/06/16 10:04:50 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef WEAPON_HPP
# define WEAPON_HPP
# include <iostream>
using std::string;
using std::cout;
using std::cin;
using std::endl;
class Weapon
{
public:
Weapon(void);
Weapon(string type);
const string &getType(void) const;
void setType(string type);
private:
string _type;
};
#endif

34
CPP01/ex03/main.cpp

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/14 12:55:24 by narnaud #+# #+# */
/* Updated: 2022/06/16 10:02:39 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#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;
}

54
CPP01/ex04/main.cpp

@ -0,0 +1,54 @@
/*
* my_sed(argc,argv)
* filename = argv[1];
* s1 = argv[2];
* s2 = argv[3];
* input::ifstream ifs;
* input = open(filename, std::ifstream::in);
*
*
*
* */
#include <iostream>
#include <fstream>
using std::string;
using std::ifstream;
using std::ofstream;
int main(int argc, char **argv)
{
string text;
string buffer;
string filename;
string oldStr;
string newStr;
int oldLen;
int i = 0, fileLen = 0;
if (argc != 4)
return (EXIT_FAILURE);
ifstream input(argv[1]);
oldStr = argv[2];
newStr = argv[3];
while (getline(input, buffer))
text += buffer;
input.close();
fileLen = text.length();
oldLen = oldStr.length();
while (i < fileLen)
{
i = text.find(oldStr, i);
if (i == -1)
break ;
text.erase(i, oldLen);
text.insert(i, newStr);
}
filename = argv[1];
ofstream output(filename.append(".replace"));
output << text;
output.close();
return (EXIT_SUCCESS);
}

66
CPP01/ex05/Harl.cpp

@ -0,0 +1,66 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Harl.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/17 11:14:29 by narnaud #+# #+# */
/* Updated: 2022/06/17 13:29:12 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Harl.hpp"
Harl::Harl (void) {
std::cout << "Harl default constructor called " << std::endl;
}
Harl::Harl (Harl const & src) {
std::cout << "Harl copy constructor called" << std::endl;
}
Harl & Harl::operator= (Harl const & src) {
std::cout << "Harl assignment operator called" << std::endl;
return (*this);
}
Harl::~Harl (void) {
std::cout << "Harl default destructor called" << std::endl;
}
void Harl::_debug(void)
{
std::cout << "Debug : ..." << std::endl;
}
void Harl::_info(void)
{
std::cout << "Info: ..." << std::endl;
}
void Harl::_warning(void)
{
std::cout << "Warning: ..." << std::endl;
}
void Harl::_error(void)
{
std::cout << "Error: ..." << std::endl;
}
void Harl::_complain(string level) {
void (Harl::*fcts[])(void) = {
&Harl::_debug, &Harl::_info, &Harl::_warning, &Harl::_error};
string ids = "DIWE";
int i = 0;
while (ids[i] && ids[i] != level[0])
i++;
if (ids[i])
(Harl::*fcts[i])();
}

34
CPP01/ex05/Harl.hpp

@ -0,0 +1,34 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Harl.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/17 11:13:50 by narnaud #+# #+# */
/* Updated: 2022/06/17 13:12:45 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#pragma once
#include <iostream>
using std::string;
class Harl {
public:
Harl (void);
Harl (Harl const & src);
~Harl (void);
Harl & operator= (Harl const & src);
void _complain(string level);
private:
void _debug(void);
void _info(void);
void _warning(void);
void _error(void);
};

23
CPP01/ex05/main.cpp

@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/06/17 11:37:33 by narnaud #+# #+# */
/* Updated: 2022/06/17 12:45:24 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#include "Harl.hpp"
int main(void)
{
Harl bot;
bot._complain("DEBUG");
bot._complain("INFO");
bot._complain("WARNING");
bot._complain("ERROR");
}
Loading…
Cancel
Save