intra to gitea
This commit is contained in:
commit
f54385c2da
|
|
@ -0,0 +1,22 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* main.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 13:51:42 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 15:26:03 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Zombie.hpp"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
Zombie *zombie = newZombie("Jean-Philippe");
|
||||
zombie->announce();
|
||||
randomChump("Jean-Michel");
|
||||
delete zombie;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
# **************************************************************************** #
|
||||
# #
|
||||
# ::: :::::::: #
|
||||
# Makefile :+: :+: :+: #
|
||||
# +:+ +:+ +:+ #
|
||||
# By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2025/07/01 13:54:05 by lfirmin #+# #+# #
|
||||
# Updated: 2025/07/01 16:43:28 by lfirmin ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
C++ = c++
|
||||
C++_FLAGS = -Wall -Wextra -Werror -std=c++98
|
||||
OBJDIR = obj
|
||||
INFILES = Main.cpp\
|
||||
Zombie.cpp\
|
||||
NewZombie.cpp\
|
||||
RandomChump.cpp\
|
||||
|
||||
OBJFILES = $(addprefix $(OBJDIR)/, $(INFILES:.cpp=.o))
|
||||
|
||||
NAME = BraiiiiiiinnnzzzZ
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
$(OBJDIR):
|
||||
@echo "📁 Creating obj directory..."
|
||||
@mkdir -p $(OBJDIR)
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)
|
||||
@echo "🧠 Compiling $< ..."
|
||||
@$(C++) $(C++_FLAGS) -c $< -o $@
|
||||
@echo "✅ $@ ready!"
|
||||
|
||||
$(NAME): $(OBJFILES)
|
||||
@echo "🔗 Linking $(NAME) ..."
|
||||
@$(C++) $(C++_FLAGS) $(OBJFILES) -o $(NAME)
|
||||
@echo "🎉 $(NAME) is ready to hunt brains!"
|
||||
|
||||
clean:
|
||||
@echo "🧹 Cleaning object files..."
|
||||
@rm -rf $(OBJDIR)
|
||||
@echo "✨ Objects cleaned!"
|
||||
|
||||
fclean: clean
|
||||
@echo "🗑️ Removing $(NAME)..."
|
||||
@rm -f $(NAME)
|
||||
@echo "💀 Full clean complete!"
|
||||
|
||||
re: fclean all
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* newZombie.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 13:51:04 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 13:51:06 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Zombie.hpp"
|
||||
|
||||
Zombie* newZombie( std::string name )
|
||||
{
|
||||
Zombie *zombie = new Zombie(name);
|
||||
return zombie;
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* randomChump.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 13:51:06 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 13:51:07 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Zombie.hpp"
|
||||
|
||||
void randomChump( std::string name )
|
||||
{
|
||||
Zombie zombie(name);
|
||||
zombie.announce();
|
||||
return;
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Zombie.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 13:51:10 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 13:51:11 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Zombie.hpp"
|
||||
|
||||
Zombie::Zombie(void) : _name("Zombie")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Zombie::Zombie(std::string name) : _name(name)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Zombie::~Zombie(void)
|
||||
{
|
||||
std::cout << _name << " is dead" << std::endl;
|
||||
}
|
||||
|
||||
void Zombie::announce(void)
|
||||
{
|
||||
std::cout << this->_name << ": BraiiiiiiinnnzzzZ..." << std::endl;
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Zombie.hpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 13:51:00 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/02 10:30:55 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef ZOMBIE_HPP
|
||||
# define ZOMBIE_HPP
|
||||
# include <iostream>
|
||||
|
||||
class Zombie
|
||||
{
|
||||
private:
|
||||
std::string _name;
|
||||
|
||||
public:
|
||||
Zombie(void);
|
||||
Zombie(std::string name);
|
||||
~Zombie();
|
||||
void announce(void);
|
||||
};
|
||||
|
||||
Zombie* newZombie( std::string name );
|
||||
void randomChump( std::string name );
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* main.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 13:51:42 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 15:26:30 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Zombie.hpp"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
Zombie *horde;
|
||||
int i = 0;
|
||||
int N = 3;
|
||||
|
||||
horde = zombieHorde(N, "Jean-Philippe");
|
||||
while (i < N)
|
||||
{
|
||||
std::cout << "Index " << i << ": ";
|
||||
horde[i].announce();
|
||||
i++;
|
||||
}
|
||||
|
||||
delete[] horde;
|
||||
return (0);
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# **************************************************************************** #
|
||||
# #
|
||||
# ::: :::::::: #
|
||||
# Makefile :+: :+: :+: #
|
||||
# +:+ +:+ +:+ #
|
||||
# By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2025/07/01 13:54:05 by lfirmin #+# #+# #
|
||||
# Updated: 2025/07/01 16:43:02 by lfirmin ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
C++ = c++
|
||||
C++_FLAGS = -Wall -Wextra -Werror -std=c++98
|
||||
OBJDIR = obj
|
||||
INFILES = Main.cpp\
|
||||
Zombie.cpp\
|
||||
ZombieHorde.cpp\
|
||||
|
||||
OBJFILES = $(addprefix $(OBJDIR)/, $(INFILES:.cpp=.o))
|
||||
|
||||
NAME = MaxiBraiiiiiiinnnzzzZ
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
$(OBJDIR):
|
||||
@echo "📁 Creating obj directory..."
|
||||
@mkdir -p $(OBJDIR)
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)
|
||||
@echo "🧠 Compiling $< ..."
|
||||
@$(C++) $(C++_FLAGS) -c $< -o $@
|
||||
|
||||
$(NAME): $(OBJFILES)
|
||||
@echo "🔗 Linking $(NAME) ..."
|
||||
@$(C++) $(C++_FLAGS) $(OBJFILES) -o $(NAME)
|
||||
@echo "🎉 $(NAME) is ready to hunt brains!"
|
||||
|
||||
clean:
|
||||
@echo "🧹 Cleaning object files..."
|
||||
@rm -rf $(OBJDIR)
|
||||
@echo "✨ Objects cleaned!"
|
||||
|
||||
fclean: clean
|
||||
@echo "🗑️ Removing $(NAME)..."
|
||||
@rm -f $(NAME)
|
||||
@echo "💀 Full clean complete!"
|
||||
|
||||
re: fclean all
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Zombie.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 13:51:10 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 15:24:33 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Zombie.hpp"
|
||||
|
||||
Zombie::Zombie(void) : _name("Zombie")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Zombie::Zombie(std::string name) : _name(name)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Zombie::~Zombie(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void Zombie::announce(void)
|
||||
{
|
||||
std::cout << this->_name << ": BraiiiiiiinnnzzzZ..." << std::endl;
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Zombie.hpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 13:51:00 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 15:20:18 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef ZOMBIE_HPP
|
||||
# define ZOMBIE_HPP
|
||||
# include <iostream>
|
||||
|
||||
class Zombie
|
||||
{
|
||||
private:
|
||||
std::string _name;
|
||||
|
||||
public:
|
||||
Zombie(void);
|
||||
Zombie(std::string name);
|
||||
~Zombie();
|
||||
void announce(void);
|
||||
};
|
||||
|
||||
Zombie* zombieHorde( int N, std::string name );
|
||||
#endif
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* zombieHorde.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 15:16:32 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 15:22:26 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Zombie.hpp"
|
||||
|
||||
Zombie* zombieHorde( int N, std::string name )
|
||||
{
|
||||
int i = 0;
|
||||
Zombie *zombieHorde;
|
||||
|
||||
zombieHorde = new Zombie[N];
|
||||
while (i < N)
|
||||
{
|
||||
zombieHorde[i] = Zombie(name);
|
||||
i++;
|
||||
}
|
||||
return zombieHorde;
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* main.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 16:27:39 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 16:34:32 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
# include <iostream>
|
||||
int main(void)
|
||||
{
|
||||
std::string str = "HI THIS IS BRAIN";
|
||||
std::string *stringPTR = &str;
|
||||
std::string &stringREF = str;
|
||||
|
||||
std::cout << "Memory address of str: " << &str << std::endl;
|
||||
std::cout << "Memory address of stringPTR: " << stringPTR << std::endl;
|
||||
std::cout << "Memory address of stringREF: " << &stringREF << std::endl;
|
||||
|
||||
std::cout << "Value of str: " << str << std::endl;
|
||||
std::cout << "Value of stringPTR: " << *stringPTR << std::endl;
|
||||
std::cout << "Value of stringREF: " << stringREF << std::endl;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# **************************************************************************** #
|
||||
# #
|
||||
# ::: :::::::: #
|
||||
# Makefile :+: :+: :+: #
|
||||
# +:+ +:+ +:+ #
|
||||
# By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2025/07/01 13:54:05 by lfirmin #+# #+# #
|
||||
# Updated: 2025/07/01 16:57:18 by lfirmin ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
CXX = c++
|
||||
CXXFLAGS = -Wall -Wextra -Werror -std=c++98
|
||||
OBJDIR = obj
|
||||
SOURCES = main.cpp
|
||||
OBJECTS = $(SOURCES:%.cpp=$(OBJDIR)/%.o)
|
||||
NAME = brain
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
$(OBJDIR):
|
||||
@echo "📁 Creating obj directory..."
|
||||
@mkdir -p $(OBJDIR)
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)
|
||||
@echo "🧠 Compiling $< ..."
|
||||
@$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
$(NAME): $(OBJECTS)
|
||||
@echo "🔗 Linking $(NAME) ..."
|
||||
@$(CXX) $(CXXFLAGS) $(OBJECTS) -o $(NAME)
|
||||
@echo "🎉 $(NAME) is ready to hunt brains!"
|
||||
|
||||
clean:
|
||||
@echo "🧹 Cleaning object files..."
|
||||
@rm -rf $(OBJDIR)
|
||||
@echo "✨ Objects cleaned!"
|
||||
|
||||
fclean: clean
|
||||
@echo "🗑️ Removing $(NAME)..."
|
||||
@rm -f $(NAME)
|
||||
@echo "💀 Full clean complete!"
|
||||
|
||||
re: fclean all
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#include "HumanA.hpp"
|
||||
|
||||
HumanA::HumanA(std::string name, Weapon &weapon) : _name(name), _weapon(weapon)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
HumanA::~HumanA(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void HumanA::attack()
|
||||
{
|
||||
std::cout << _name << " attacks with their " << _weapon.getType() << std::endl;
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef HUMANA_HPP
|
||||
# define HUMANA_HPP
|
||||
|
||||
# include "Weapon.hpp"
|
||||
|
||||
class HumanA
|
||||
{
|
||||
private:
|
||||
std::string _name;
|
||||
Weapon &_weapon;
|
||||
public:
|
||||
HumanA(std::string name, Weapon &weapon);
|
||||
~HumanA();
|
||||
|
||||
void attack();
|
||||
};
|
||||
#endif
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#include "HumanB.hpp"
|
||||
|
||||
HumanB::HumanB(std::string name) : _name(name), _weapon(NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
HumanB::~HumanB(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void HumanB::attack()
|
||||
{
|
||||
if (_weapon == NULL) {
|
||||
std::cout << _name << " has no weapon to attack with!" << std::endl;
|
||||
return;
|
||||
}
|
||||
std::cout << _name << " attacks with their " << _weapon->getType() << std::endl;
|
||||
}
|
||||
|
||||
void HumanB::setWeapon(Weapon &weapon)
|
||||
{
|
||||
_weapon = &weapon;
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#ifndef HUMANB_HPP
|
||||
# define HUMANB_HPP
|
||||
|
||||
# include "Weapon.hpp"
|
||||
|
||||
class HumanB
|
||||
{
|
||||
private:
|
||||
std::string _name;
|
||||
Weapon *_weapon;
|
||||
public:
|
||||
HumanB(std::string name);
|
||||
~HumanB();
|
||||
|
||||
void attack();
|
||||
void setWeapon(Weapon &weapon);
|
||||
};
|
||||
#endif
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Main.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 16:53:34 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 16:53:45 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#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;
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# **************************************************************************** #
|
||||
# #
|
||||
# ::: :::::::: #
|
||||
# Makefile :+: :+: :+: #
|
||||
# +:+ +:+ +:+ #
|
||||
# By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2025/07/01 13:54:05 by lfirmin #+# #+# #
|
||||
# Updated: 2025/07/01 16:57:18 by lfirmin ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
CXX = c++
|
||||
CXXFLAGS = -Wall -Wextra -Werror -std=c++98
|
||||
SOURCES = Main.cpp Weapon.cpp HumanA.cpp HumanB.cpp
|
||||
OBJDIR = obj
|
||||
OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o))
|
||||
NAME = violence
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
$(OBJDIR):
|
||||
@echo "📁 Creating obj directory..."
|
||||
@mkdir -p $(OBJDIR)
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)
|
||||
@echo "🧠 Compiling $< ..."
|
||||
@$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
$(NAME): $(OBJECTS)
|
||||
@echo "🔗 Linking $(NAME) ..."
|
||||
@$(CXX) $(CXXFLAGS) $(OBJECTS) -o $(NAME)
|
||||
@echo "🎉 $(NAME) is ready to hunt brains!"
|
||||
|
||||
clean:
|
||||
@echo "🧹 Cleaning object files..."
|
||||
@rm -rf $(OBJDIR)
|
||||
@echo "✨ Objects cleaned!"
|
||||
|
||||
fclean: clean
|
||||
@echo "🗑️ Removing $(NAME)..."
|
||||
@rm -f $(NAME)
|
||||
@echo "💀 Full clean complete!"
|
||||
|
||||
re: fclean all
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#include "Weapon.hpp"
|
||||
|
||||
Weapon::Weapon()
|
||||
{
|
||||
}
|
||||
|
||||
Weapon::Weapon(std::string type)
|
||||
{
|
||||
setType(type);
|
||||
}
|
||||
|
||||
Weapon::~Weapon()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Weapon::setType(std::string type)
|
||||
{
|
||||
_type = type;
|
||||
}
|
||||
|
||||
const std::string &Weapon::getType() const
|
||||
{
|
||||
return (_type);
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef WEAPON_HPP
|
||||
# define WEAPON_HPP
|
||||
|
||||
# include <iostream>
|
||||
|
||||
class Weapon
|
||||
{
|
||||
private:
|
||||
std::string _type;
|
||||
public:
|
||||
Weapon();
|
||||
Weapon(std::string type);
|
||||
~Weapon();
|
||||
|
||||
void setType(std::string type);
|
||||
const std::string &getType() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Main.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/01 23:30:01 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/01 23:48:50 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
static int open_files(std::string nameInputFile, std::string nameOutputfile,
|
||||
std::ifstream *inputFile, std::ofstream *outputFile)
|
||||
{
|
||||
(*inputFile).open(nameInputFile.c_str(), std::fstream::in);
|
||||
if (!inputFile->is_open()) // ou if (!(*inputFile))
|
||||
{
|
||||
std::cerr << "Failed to open input file!" << std::endl;
|
||||
return (1);
|
||||
}
|
||||
(*outputFile).open(nameOutputfile.c_str(), std::fstream::out);
|
||||
if (!outputFile->is_open()) // ou if (!(*outputFile))
|
||||
{
|
||||
std::cerr << "Failed to open output file!" << std::endl;
|
||||
(*inputFile).close();
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void read_and_replace(char **argv, std::ifstream *inputFile, std::ofstream *outputFile)
|
||||
{
|
||||
std::string to_find;
|
||||
std::string to_replace;
|
||||
std::string line;
|
||||
std::string::size_type found;
|
||||
size_t end_last_found;
|
||||
std::string replaced_line;
|
||||
|
||||
to_find = *(argv + 2);
|
||||
to_replace = *(argv + 3);
|
||||
end_last_found = 0;
|
||||
|
||||
while(std::getline(*inputFile, line))
|
||||
{
|
||||
|
||||
if (to_find.empty())
|
||||
{
|
||||
if (!(*inputFile).eof())
|
||||
*outputFile << line << std::endl;
|
||||
else
|
||||
*outputFile << line;
|
||||
}
|
||||
else
|
||||
{
|
||||
replaced_line.clear();
|
||||
end_last_found = 0;
|
||||
found = line.find(to_find);
|
||||
if (found != std::string::npos)
|
||||
{
|
||||
while (found != std::string::npos)
|
||||
{
|
||||
replaced_line.append(line,end_last_found,found - end_last_found);
|
||||
replaced_line += to_replace;
|
||||
end_last_found = found + to_find.length();
|
||||
found = line.find(to_find, end_last_found);
|
||||
if (found == std::string::npos)
|
||||
replaced_line.append(line, end_last_found,line.length());
|
||||
}
|
||||
}
|
||||
else
|
||||
replaced_line = line;
|
||||
if (!(*inputFile).eof())
|
||||
*outputFile << replaced_line << std::endl;
|
||||
else
|
||||
*outputFile << replaced_line;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
std::string nameInputFile;
|
||||
std::string nameOutputfile;
|
||||
std::ifstream inputFile;
|
||||
std::ofstream outputFile;
|
||||
|
||||
if (argc != 4)
|
||||
return (std::cerr << "./sed <Filename> <S1> <S2>" << std::endl, 0);
|
||||
nameInputFile = argv[1];
|
||||
nameOutputfile = nameOutputfile + argv[1] + ".replace";
|
||||
if (open_files(nameInputFile, nameOutputfile, &inputFile, &outputFile))
|
||||
return (1);
|
||||
read_and_replace(argv, &inputFile, &outputFile);
|
||||
inputFile.close();
|
||||
outputFile.close();
|
||||
return (0);
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
# **************************************************************************** #
|
||||
# #
|
||||
# ::: :::::::: #
|
||||
# Makefile :+: :+: :+: #
|
||||
# +:+ +:+ +:+ #
|
||||
# By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2025/07/01 13:54:05 by lfirmin #+# #+# #
|
||||
# Updated: 2025/07/01 23:43:34 by lfirmin ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
CXX = c++
|
||||
CXXFLAGS = -Wall -Wextra -Werror -std=c++98
|
||||
OBJDIR = obj
|
||||
SOURCES = Main.cpp
|
||||
OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o))
|
||||
NAME = sed
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
$(OBJDIR):
|
||||
@echo "📁 Creating obj directory..."
|
||||
@mkdir -p $(OBJDIR)
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)
|
||||
@echo "🧠 Compiling $< ..."
|
||||
@$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
@echo "✅ $@ ready!"
|
||||
|
||||
$(NAME): $(OBJECTS)
|
||||
@echo "🔗 Linking $(NAME) ..."
|
||||
@$(CXX) $(CXXFLAGS) $(OBJECTS) -o $(NAME)
|
||||
@echo "🎉 $(NAME) is ready to hunt brains!"
|
||||
|
||||
clean:
|
||||
@echo "🧹 Cleaning object files..."
|
||||
@rm -rf $(OBJDIR)
|
||||
@echo "✨ Objects cleaned!"
|
||||
|
||||
fclean: clean
|
||||
@echo "🗑️ Removing $(NAME)..."
|
||||
@rm -f $(NAME)
|
||||
@echo "💀 Full clean complete!"
|
||||
|
||||
re: fclean all
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Harl.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/02 10:04:24 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/02 10:05:57 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Harl.hpp"
|
||||
|
||||
Harl::Harl()
|
||||
{
|
||||
}
|
||||
|
||||
Harl::~Harl()
|
||||
{
|
||||
}
|
||||
|
||||
void Harl::_debug(void)
|
||||
{
|
||||
std::cout << "I love having extra bacon for my 7XL-double-cheese-triple-pickle-specialketchup burger. I really do!" << std::endl;
|
||||
|
||||
}
|
||||
void Harl::_info(void)
|
||||
{
|
||||
std::cout << "I cannot believe adding extra bacon costs more money. You 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 << "I think I deserve to have some extra bacon for free. I've been coming for years whereas you started working here since last month." << std::endl;
|
||||
}
|
||||
void Harl::_error(void)
|
||||
{
|
||||
std::cout << "This is unacceptable! I want to speak to the manager now." << std::endl;
|
||||
}
|
||||
|
||||
void Harl::complain(std::string level)
|
||||
{
|
||||
int i;
|
||||
|
||||
std::string levels[4] = {"DEBUG", "INFO", "WARNING", "ERROR"};
|
||||
void (Harl::*fptr[4])() = {&Harl::_debug, &Harl::_info, &Harl::_warning, &Harl::_error};
|
||||
|
||||
i = 0;
|
||||
while (i < 4)
|
||||
{
|
||||
if (level == levels[i])
|
||||
{
|
||||
(this->*fptr[i])();
|
||||
return;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
std::cout << "No Valid Level.\n";
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Harl.hpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/02 10:03:59 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/02 10:04:08 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef HARL_HPP
|
||||
# define HARL_HPP
|
||||
|
||||
#include <iostream>
|
||||
|
||||
class Harl
|
||||
{
|
||||
private:
|
||||
void _debug(void);
|
||||
void _info(void);
|
||||
void _warning(void);
|
||||
void _error(void);
|
||||
|
||||
public:
|
||||
Harl();
|
||||
~Harl();
|
||||
|
||||
void complain(std::string level) ;
|
||||
};
|
||||
#endif
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Main.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/02 10:08:12 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/02 10:08:56 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Harl.hpp"
|
||||
|
||||
int main (void)
|
||||
{
|
||||
Harl harl;
|
||||
|
||||
std::cout << std::endl << "====DEBUG Level====" << std::endl;
|
||||
harl.complain("DEBUG");
|
||||
std::cout << std::endl << "====INFO Level====" << std::endl;;
|
||||
harl.complain("INFO");
|
||||
std::cout << std::endl << "====WARNING Level====" << std::endl;
|
||||
harl.complain("WARNING");
|
||||
std::cout << std::endl << "====ERROR Level====" << std::endl;
|
||||
harl.complain("ERROR");
|
||||
std::cout << std::endl << "====No valid Level====" << std::endl;
|
||||
harl.complain("ALARM");
|
||||
return (0);
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
# **************************************************************************** #
|
||||
# #
|
||||
# ::: :::::::: #
|
||||
# Makefile :+: :+: :+: #
|
||||
# +:+ +:+ +:+ #
|
||||
# By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2025/07/01 13:54:05 by lfirmin #+# #+# #
|
||||
# Updated: 2025/07/02 10:09:25 by lfirmin ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
CXX = c++
|
||||
CXXFLAGS = -Wall -Wextra -Werror -std=c++98
|
||||
OBJDIR = obj
|
||||
SOURCES = Main.cpp Harl.cpp
|
||||
OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o))
|
||||
NAME = harl
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
$(OBJDIR):
|
||||
@echo "📁 Creating obj directory..."
|
||||
@mkdir -p $(OBJDIR)
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)
|
||||
@echo "🧠 Compiling $< ..."
|
||||
@$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
@echo "✅ $@ ready!"
|
||||
|
||||
$(NAME): $(OBJECTS)
|
||||
@echo "🔗 Linking $(NAME) ..."
|
||||
@$(CXX) $(CXXFLAGS) $(OBJECTS) -o $(NAME)
|
||||
@echo "🎉 $(NAME) is ready to hunt brains!"
|
||||
|
||||
clean:
|
||||
@echo "🧹 Cleaning object files..."
|
||||
@rm -rf $(OBJDIR)
|
||||
@echo "✨ Objects cleaned!"
|
||||
|
||||
fclean: clean
|
||||
@echo "🗑️ Removing $(NAME)..."
|
||||
@rm -f $(NAME)
|
||||
@echo "💀 Full clean complete!"
|
||||
|
||||
re: fclean all
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Harl.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/02 10:04:24 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/02 10:25:30 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Harl.hpp"
|
||||
|
||||
Harl::Harl()
|
||||
{
|
||||
}
|
||||
|
||||
Harl::~Harl()
|
||||
{
|
||||
}
|
||||
|
||||
void Harl::_debug(void)
|
||||
{
|
||||
std::cout << "I love having extra bacon for my 7XL-double-cheese-triple-pickle-specialketchup burger. I really do!\n" << std::endl;
|
||||
|
||||
}
|
||||
void Harl::_info(void)
|
||||
{
|
||||
std::cout << "I cannot believe adding extra bacon costs more money. You didn't put enough bacon in my burger! If you did, I wouldn't be asking for more!\n" << std::endl;
|
||||
}
|
||||
void Harl::_warning(void)
|
||||
{
|
||||
std::cout << "I think I deserve to have some extra bacon for free. I've been coming for years whereas you started working here since last month.\n" << std::endl;
|
||||
}
|
||||
void Harl::_error(void)
|
||||
{
|
||||
std::cout << "This is unacceptable! I want to speak to the manager now.\n" << std::endl;
|
||||
}
|
||||
|
||||
|
||||
void Harl::complain(std::string level)
|
||||
{
|
||||
int i;
|
||||
std::string levels[4] = {"DEBUG", "INFO", "WARNING", "ERROR"};
|
||||
|
||||
i = 0;
|
||||
if (!level.compare(levels[0]) || i == 1)
|
||||
{
|
||||
std::cout << "[ DEBUG ]" << std::endl;
|
||||
Harl::_debug();
|
||||
i = 1;
|
||||
}
|
||||
if (!level.compare(levels[1]) || i == 1)
|
||||
{
|
||||
std::cout << "[ INFO ]" << std::endl;
|
||||
Harl::_info();
|
||||
i = 1;
|
||||
}
|
||||
if (!level.compare(levels[2]) || i == 1)
|
||||
{
|
||||
std::cout << "[ WARNING ]" << std::endl;
|
||||
Harl::_warning();
|
||||
i = 1;
|
||||
}
|
||||
if (!level.compare(levels[3]) || i == 1)
|
||||
{
|
||||
std::cout << "[ ERROR ]" << std::endl;
|
||||
Harl::_error();
|
||||
i = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "No Valid Level.\n";
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Harl.hpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/02 10:03:59 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/02 10:04:08 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef HARL_HPP
|
||||
# define HARL_HPP
|
||||
|
||||
#include <iostream>
|
||||
|
||||
class Harl
|
||||
{
|
||||
private:
|
||||
void _debug(void);
|
||||
void _info(void);
|
||||
void _warning(void);
|
||||
void _error(void);
|
||||
|
||||
public:
|
||||
Harl();
|
||||
~Harl();
|
||||
|
||||
void complain(std::string level) ;
|
||||
};
|
||||
#endif
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* Main.cpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/07/02 10:08:12 by lfirmin #+# #+# */
|
||||
/* Updated: 2025/07/02 10:13:05 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "Harl.hpp"
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
std::string level;
|
||||
Harl harl;
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
std::cout << "Usage : ./harlfilter <level>\n";
|
||||
return (0);
|
||||
}
|
||||
level = argv[1];
|
||||
harl.complain(level);
|
||||
return (0);
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
# **************************************************************************** #
|
||||
# #
|
||||
# ::: :::::::: #
|
||||
# Makefile :+: :+: :+: #
|
||||
# +:+ +:+ +:+ #
|
||||
# By: lfirmin <lfirmin@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2025/07/01 13:54:05 by lfirmin #+# #+# #
|
||||
# Updated: 2025/07/02 10:25:55 by lfirmin ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
CXX = c++
|
||||
CXXFLAGS = -Wall -Wextra -Werror -std=c++98
|
||||
OBJDIR = obj
|
||||
SOURCES = Main.cpp Harl.cpp
|
||||
OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o))
|
||||
NAME = harlfilter
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
$(OBJDIR):
|
||||
@echo "📁 Creating obj directory..."
|
||||
@mkdir -p $(OBJDIR)
|
||||
|
||||
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)
|
||||
@echo "🧠 Compiling $< ..."
|
||||
@$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
@echo "✅ $@ ready!"
|
||||
|
||||
$(NAME): $(OBJECTS)
|
||||
@echo "🔗 Linking $(NAME) ..."
|
||||
@$(CXX) $(CXXFLAGS) $(OBJECTS) -o $(NAME)
|
||||
@echo "🎉 $(NAME) is ready to hunt brains!"
|
||||
|
||||
clean:
|
||||
@echo "🧹 Cleaning object files..."
|
||||
@rm -rf $(OBJDIR)
|
||||
@echo "✨ Objects cleaned!"
|
||||
|
||||
fclean: clean
|
||||
@echo "🗑️ Removing $(NAME)..."
|
||||
@rm -f $(NAME)
|
||||
@echo "💀 Full clean complete!"
|
||||
|
||||
re: fclean all
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
Loading…
Reference in New Issue