diff --git a/ex01/Makefile b/ex01/Makefile new file mode 100644 index 0000000..919ddf8 --- /dev/null +++ b/ex01/Makefile @@ -0,0 +1,42 @@ +NAME = iter + +SRC = main.cpp \ + +OBJ = $(SRC:.cpp=.o) + +CC = c++ +CFLAGS = -Wall -Wextra -Werror -std=c++98 + +GREEN = \033[0;32m +RED = \033[0;31m +RESET = \033[0m + +TOTAL := $(words $(SRC)) +COUNT = 0 + +all: $(NAME) + +$(NAME): $(OBJ) + @rm -f .build_start + @$(CC) $(CFLAGS) $(OBJ) -o $(NAME) + @printf "\n$(GREEN)✔ Listo (100%%)\n$(RESET)" + +%.o: %.cpp + @if [ ! -f .build_start ]; then printf "$(GREEN)Compilando archivos...\n$(RESET)"; touch .build_start; fi + @$(eval COUNT = $(shell echo $$(($(COUNT)+1)))) + @PERCENT=$$(($(COUNT)*100/$(TOTAL))); \ + BAR=$$(printf "%0.s#" $$(seq 1 $$((PERCENT/5)))); \ + SPACE=$$(printf "%0.s " $$(seq 1 $$((20-PERCENT/5)))); \ + printf "\r [$$BAR$$SPACE] %3d%% (%d/%d) $< " $$PERCENT $(COUNT) $(TOTAL) + @$(CC) $(CFLAGS) -c $< -o $@ + +clean: + @printf "$(RED)Eliminando...\n$(RESET)" + @rm -f $(OBJ) + +fclean: clean + @rm -f $(NAME) + +re: fclean all + +.PHONY: all clean fclean re diff --git a/ex01/iter.hpp b/ex01/iter.hpp new file mode 100644 index 0000000..43ee018 --- /dev/null +++ b/ex01/iter.hpp @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* iter.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: aortigos +# include + +template +void iter(PTR *address, size_t const lenght, F func) +{ + size_t i; + + i = 0; + while (i < lenght) + { + func(address[i]); + i++; + } +} + +#endif \ No newline at end of file diff --git a/ex01/main.cpp b/ex01/main.cpp new file mode 100644 index 0000000..03941a9 --- /dev/null +++ b/ex01/main.cpp @@ -0,0 +1,64 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: aortigos +void printElement(const T& elem) +{ + std::cout << elem << " "; +} + +void toUpper(std::string& str) +{ + for (size_t i = 0; i < str.length(); i++) + str[i] = std::toupper(str[i]); +} + +void increment(int& x) +{ + x++; +} + +int main() +{ + // -------- STRING ARRAY -------- + std::string words[] = {"hola", "mundo", "iter"}; + size_t wordsLen = sizeof(words) / sizeof(words[0]); + + std::cout << "Original strings: "; + iter(words, wordsLen, printElement); + std::cout << std::endl; + + iter(words, wordsLen, toUpper); + + std::cout << "Uppercase strings: "; + iter(words, wordsLen, printElement); + std::cout << std::endl; + + + // -------- INT ARRAY -------- + int numbers[] = {1, 2, 3, 4}; + size_t numLen = sizeof(numbers) / sizeof(numbers[0]); + + std::cout << "\nOriginal ints: "; + iter(numbers, numLen, printElement); + std::cout << std::endl; + + iter(numbers, numLen, increment); + + std::cout << "Incremented ints: "; + iter(numbers, numLen, printElement); + std::cout << std::endl; + + return 0; +}