Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <unistd.h>
- //////////////////////////
- void ft_putchar(char a)
- {
- write(1, &a, 1);
- }
- /////////////////////////
- void ft_putnbr(int nb)
- {
- if ((nb < 0) && (nb != -2147483648))
- {
- nb = -1 * nb;
- if (nb > 9)
- {
- ft_putchar('-');
- ft_putnbr(nb / 10);
- ft_putnbr(nb % 10);
- }
- else
- ft_putchar(nb + '0');
- }
- else if (nb == -2147483648)
- {
- ft_putchar('-');
- ft_putchar('2');
- ft_putnbr(147483648);
- }
- else if (nb > 9)
- {
- ft_putnbr(nb / 10);
- ft_putnbr(nb % 10);
- }
- else
- ft_putchar(nb + '0');
- }
- //////////////////////////
- int ft_atoi(char *str)
- {
- int sign;
- int res;
- sign = 1;
- res = 0;
- while (((*str > 8) && (*str < 14)) || (*str == 32))
- str++;
- if (*str == 45)
- {
- sign = 88;
- str++;
- }
- else if (*str == 43)
- str++;
- while ((*str > 47) && (*str < 58))
- {
- res = (res * 10) + (*str - 48);
- str++;
- }
- if (sign != 1)
- {
- res = -1 * res;
- }
- return (res);
- }
- //////////////////////////////////////////
- int calculator(int a, int b, char *op)
- {
- if (op[0] == 47)
- return (a / b);
- if (op[0] == 37)
- return (a % b);
- if (op[0] == 42)
- return (a * b);
- if (op[0] == 43)
- return (a + b);
- if (op[0] == 45)
- return (a - b);
- }
- //////////////////////////////
- char *op_checker(char *str)
- {
- int run;
- run = 0;
- while (str[run] != '\0')
- ++run;
- if ((run == 1) && ((str[0] == 47) || (str[0] == 37) ||
- (str[0] == 42) || (str[0] == 43) || (str[0] == 45)))
- return (str);
- else
- return ("z");
- }
- ////////////////////////////////
- int main(int argc, char **argv)
- {
- int run;
- while (argv[run] != '\0')
- {
- ++run;
- if ((run == 4) && (op_checker(argv[2]) != "z"))
- ft_putnbr(calculator(ft_atoi(argv[1]), ft_atoi(argv[3]), argv[2]));
- }
- if ((op_checker(argv[2]) == "z") && (argv[3] != '\0'))
- ft_putnbr(0);
- ft_putchar('\r');
- }
Advertisement
Add Comment
Please, Sign In to add comment