From 6b00e95da965a6f298a371d78ee216fa75426dae Mon Sep 17 00:00:00 2001 From: adjoly Date: Tue, 3 Jun 2025 15:57:15 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=E2=9C=A8=E3=80=8D=20feat:=20finished?= =?UTF-8?q?=20ex01?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ex01/Makefile | 60 +++++++++++++++++++++++++++++++++++++++ ex01/RPN | Bin 0 -> 48208 bytes ex01/RPN.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ ex01/RPN.hpp | 30 ++++++++++++++++++++ ex01/main.cpp | 26 +++++++++++++++++ 5 files changed, 193 insertions(+) create mode 100644 ex01/Makefile create mode 100755 ex01/RPN create mode 100644 ex01/RPN.cpp create mode 100644 ex01/RPN.hpp create mode 100644 ex01/main.cpp diff --git a/ex01/Makefile b/ex01/Makefile new file mode 100644 index 0000000..d6db729 --- /dev/null +++ b/ex01/Makefile @@ -0,0 +1,60 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: adjoly +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2024/10/25 16:09:27 by adjoly #+# #+# # +# Updated: 2025/06/03 11:58:38 by adjoly ### ########.fr # +# # +# **************************************************************************** # + +SHELL = bash + +NAME = RPN + +CC = clang++ + +OBJSDIR = obj/ + +SRCS = $(shell find . -name '*.cpp') + +OBJS = $(addprefix $(OBJSDIR), $(SRCS:.cpp=.o)) + +FLAGS = -Wall -Werror -Wextra -std=c++98 -MMD -MP + +RED = \033[0;31m +GREEN = \033[0;32m +YELLOW = \033[1;33m +PURPLE = \e[0;35m +NC = \033[0m +DELETE = \x1B[2K\r + +ifeq ($(VERBOSE),true) + FLAGS += -D VERBOSE +endif + +all: $(NAME) + +$(NAME): $(OBJS) + @$(CC) $(FLAGS) -I . $(OBJS) -o $(NAME) + @printf "$(YELLOW)「✨」($(NAME)) Program compiled\n" + +$(OBJSDIR)%.o: %.cpp + @mkdir -p $(@D) + @$(CC) $(FLAGS) -I . -c $< -o $@ + @printf "$(DELETE)$(GREEN)「🔨」($<) Object compiled\n" + +clean: + @rm -f $(OBJS) + @printf "$(DELETE)$(RED)「🗑️」($(OBJS)) Object deleted\n" + +fclean: clean + @rm -f $(NAME) + @rm -Rf $(OBJSDIR) + @printf "$(RED)「🗑️」($(NAME)) Program deleted\n" + +re: fclean all + +.PHONY: clean fclean all re diff --git a/ex01/RPN b/ex01/RPN new file mode 100755 index 0000000000000000000000000000000000000000..1dbfd7c0830db5656ae06bb4e40b8c73958c9e14 GIT binary patch literal 48208 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 literal 0 HcmV?d00001 diff --git a/ex01/RPN.cpp b/ex01/RPN.cpp new file mode 100644 index 0000000..93851c0 --- /dev/null +++ b/ex01/RPN.cpp @@ -0,0 +1,77 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* RPN.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/06/03 12:07:59 by adjoly #+# #+# */ +/* Updated: 2025/06/03 15:56:22 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include +#include +#include + +int add(int first, int second) { return first + second; } +int subst(int first, int second) { return first + second; } +int mult(int first, int second) { return first * second; } +int div(int first, int second) { + if (second == 0) + throw std::invalid_argument("can't divide by 0 sorry D:"); + return first / second; +} + +void calc(int calc(int, int), std::string::const_iterator , + std::stack &stack) { + int first, second; + + if (stack.size() != 2) + throw std::range_error("need 2 at least two number"); + second = stack.top(); + stack.pop(); + first = stack.top(); + stack.pop(); + if (stack.size() != 0) + throw std::range_error("too much number"); + stack.push(calc(first, second)); + // if (*(c + 1) != ' ' || *(c + 1) != '\0') + // throw std::invalid_argument(""); +} + +void handle(std::string::const_iterator c, std::stack &stack) { + if (*c == ' ') + return; + else if (std::isdigit(*c)) + stack.push(*c - '0'); + else if (*c == '+') + calc(add, c, stack); + else if (*c == '-') + calc(subst, c, stack); + else if (*c == '*') + calc(mult, c, stack); + else if (*c == '/') + calc(div, c, stack); + else + throw std::invalid_argument("invalid caracter detected"); +} + +void rpn(char *av) { + std::string str(av); + std::stack stack; + + for (auto it = range(str)) { + try { + handle(it, stack); + } catch (std::exception &e) { + std::stringstream str; + str << "Error: " << e.what() << " : " << *it; + throw std::runtime_error(str.str()); + } + } + std::cout << stack.top() << std::endl; +} diff --git a/ex01/RPN.hpp b/ex01/RPN.hpp new file mode 100644 index 0000000..139a539 --- /dev/null +++ b/ex01/RPN.hpp @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* RPN.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/06/03 12:00:35 by adjoly #+# #+# */ +/* Updated: 2025/06/03 12:09:55 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include +#include +#include + +#define range(x) \ + x.begin(); \ + it != x.end(); \ + it++ + +#define auto __auto_type + +typedef unsigned int uint32_t; +typedef unsigned short uint16_t; + + +void rpn(char *); diff --git a/ex01/main.cpp b/ex01/main.cpp new file mode 100644 index 0000000..a9386dc --- /dev/null +++ b/ex01/main.cpp @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/06/03 11:58:43 by adjoly #+# #+# */ +/* Updated: 2025/06/03 15:54:55 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +int main(int ac, char **av) { + if (ac > 1 && ac < 3) { + try { + rpn(av[1]); + } catch(std::exception &e) { + std::cerr << e.what() << std::endl; + } + } else { + std::cerr << "Error" << std::endl; + } +}