eg0rmaffin

do-op alpha

Jul 16th, 2019
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.87 KB | None | 0 0
  1. #include <unistd.h>
  2. //////////////////////////
  3. void    ft_putchar(char a)
  4. {
  5.     write(1, &a, 1);
  6. }
  7. /////////////////////////
  8. void    ft_putnbr(int nb)
  9. {
  10.     if ((nb < 0) && (nb != -2147483648))
  11.     {
  12.         nb = -1 * nb;
  13.         if (nb > 9)
  14.         {
  15.             ft_putchar('-');
  16.             ft_putnbr(nb / 10);
  17.             ft_putnbr(nb % 10);
  18.         }
  19.         else
  20.             ft_putchar(nb + '0');
  21.     }
  22.     else if (nb == -2147483648)
  23.     {
  24.         ft_putchar('-');
  25.         ft_putchar('2');
  26.         ft_putnbr(147483648);
  27.     }
  28.     else if (nb > 9)
  29.     {
  30.         ft_putnbr(nb / 10);
  31.         ft_putnbr(nb % 10);
  32.     }
  33.     else
  34.         ft_putchar(nb + '0');
  35. }
  36. //////////////////////////
  37. int     ft_atoi(char *str)
  38. {
  39.     int sign;
  40.     int res;
  41.  
  42.     sign = 1;
  43.     res = 0;
  44.     while (((*str > 8) && (*str < 14)) || (*str == 32))
  45.         str++;
  46.     if (*str == 45)
  47.     {
  48.         sign = 88;
  49.         str++;
  50.     }
  51.     else if (*str == 43)
  52.         str++;
  53.     while ((*str > 47) && (*str < 58))
  54.     {
  55.         res = (res * 10) + (*str - 48);
  56.         str++;
  57.     }
  58.     if (sign != 1)
  59.     {
  60.         res = -1 * res;
  61.     }
  62.     return (res);
  63. }
  64. //////////////////////////////////////////
  65. int     calculator(int a, int b, char *op)
  66. {
  67.     if (op[0] == 47)
  68.         return (a / b);
  69.     if (op[0] == 37)
  70.         return (a % b);
  71.     if (op[0] == 42)
  72.         return (a * b);
  73.     if (op[0] == 43)
  74.         return (a + b);
  75.     if (op[0] == 45)
  76.         return (a - b);
  77. }
  78. //////////////////////////////
  79. char    *op_checker(char *str)
  80. {
  81.     int run;
  82.  
  83.     run = 0;
  84.     while (str[run] != '\0')
  85.         ++run;
  86.     if ((run == 1) && ((str[0] == 47) || (str[0] == 37) ||
  87.                 (str[0] == 42) || (str[0] == 43) || (str[0] == 45)))
  88.         return (str);
  89.     else
  90.         return ("z");
  91. }
  92. ////////////////////////////////
  93. int main(int argc, char **argv)
  94. {
  95.     int run;
  96.     while (argv[run] != '\0')
  97.     {
  98.         ++run;
  99.         if ((run == 4) && (op_checker(argv[2]) != "z"))
  100.             ft_putnbr(calculator(ft_atoi(argv[1]), ft_atoi(argv[3]), argv[2]));
  101.     }
  102.     if ((op_checker(argv[2]) == "z") && (argv[3] != '\0'))
  103.         ft_putnbr(0);
  104.     ft_putchar('\r');
  105. }
Advertisement
Add Comment
Please, Sign In to add comment