--- /dev/null
+//27.06.2023 20:48
+
+int ft_is_sort(int *tab, int length, int(*f)(int, int))
+{
+ int i;
+
+ i = 0;
+ while (i < length - 1)
+ {
+ if (f(tab[i], tab[i + 1]) > 0)
+ return (0);
+ ++i;
+ }
+ return (1);
+}
--- /dev/null
+//27.06.2023 20:53
+
+#include <unistd.h>
+#include "operators.h"
+
+void print_error(char *str)
+{
+ while (*str)
+ write(2, str++, 1);
+ return ;
+}
+
+void print_nbr(int nbr)
+{
+ char digit;
+
+ if (nbr < 0)
+ {
+ write(1, "-", 1);
+ if (nbr <= -10)
+ print_nbr(-(nbr / 10));
+ digit = '0' - nbr % 10;
+ }
+ else
+ {
+ if (nbr >= 10)
+ print_nbr(nbr / 10);
+ digit = '0' + nbr % 10;
+ }
+ write(1, &digit, 1);
+ return ;
+}
+
+enum operator_id
+{
+ Invalid,
+ Add,
+ Sub,
+ Mult,
+ Div,
+ Mod,
+};
+
+enum operator_id get_op_id(char *str)
+{
+ if (str[2] != '\0')
+ return (Invalid);
+ if (*str == '+')
+ return (Add);
+ if (*str == '-')
+ return (Sub);
+ if (*str == '*')
+ return (Mult);
+ if (*str == '/')
+ return (Div);
+ if (*str == '%')
+ return (Mod);
+ return (Invalid);
+}
+
+void fill_f_arr(int (f_arr[6])(int, int))
+{
+ fun_arr[Invalid] = NULL;
+ fun_arr[Add] = &ft_add;
+ fun_arr[Sub] = &ft_sub;
+ fun_arr[Mul] = &ft_mult;
+ fun_arr[Div] = &ft_div;
+ fun_arr[Mod] = &ft_mod;
+ return ;
+}
+
+int main(int argc, char **argv)
+{
+ int val1;
+ int val2;
+ int op_id;
+ int (f_arr[6])(int, int);
+
+ if (argc != 4)
+ return (0);
+ fill_f_arr(&f_arr);
+ op_id = get_op_id(argv[2]);
+ if (op_id == Invalid)
+ write(1, "0", 2);
+ val1 = ft_atoi(argv[1]);
+ val2 = ft_atoi(argv[3]);
+ if (val2 == 0 && op_id == Div)
+ print_error("Stop : division by zero");
+ else if (val2 == 0 && op_id == Mod)
+ print_error("Stop : modulo by zero");
+ else if (op_id != Invalid)
+ f_arr[op_id](val1, val2);
+ write(1, "\n", 1);
+ return (0);
+}