daily pastebin goal
66%
SHARE
TWEET

Untitled

a guest Dec 13th, 2018 52 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. char    *ft_strnew(size_t size)
  2.     {
  3.     char    *temp;
  4.     size_t  i;
  5.  
  6.     if (!(temp = (char*)malloc(sizeof(char) * (size + 1))))
  7.         return (NULL);
  8.     i = 0;
  9.     while (i < size)
  10.     {
  11.         temp[i] = '';
  12.         i++;
  13.     }
  14.     temp[i] = '';
  15.     return (temp);
  16. }
  17.  
  18. char    *ft_strjoin(char const *s1, char const *s2)
  19. {
  20.     char    *temp;
  21.     int     i;
  22.     int     j;
  23.  
  24.     if (!(temp = (char*)malloc(sizeof(char) *
  25.         (ft_strlen(s1) + ft_strlen(s2) + 1))))
  26.         return (NULL);
  27.     i = 0;
  28.     j = 0;
  29.     while (s1[i])
  30.     {
  31.         temp[j] = s1[i];
  32.         i++;
  33.         j++;
  34.     }
  35.     i = 0;
  36.     while (s2[i])
  37.     {
  38.         temp[j] = s2[i];
  39.         i++;
  40.         j++;
  41.     }
  42.     temp[j] = '';
  43.     return (temp);
  44. }
  45.  
  46. int         left_one(int *i, char c)
  47. {
  48.     if (--(*i) < 0)
  49.         return (0);
  50.     else
  51.         return (c - '0');
  52. }
  53.  
  54. char        *add_char(char *nbr1, char *nbr2)
  55. {
  56.     int     i;
  57.     int     j;
  58.     int     left[4];
  59.     char    *temp;
  60.  
  61.     left[0] = 0;
  62.     temp = ft_strnew(0);
  63.     i = ft_strlen(nbr1);
  64.     j = ft_strlen(nbr2);
  65.     if (i > j)
  66.         left[3] = i;
  67.     else
  68.         left[3] = j;
  69.     while (--left[3] >= 0)
  70.     {
  71.         left[1] = left_one(&i, nbr1[i - 1]);
  72.         left[2] = left_one(&j, nbr2[j - 1]);
  73.         left[0] += left[1] + left[2];
  74.         temp = ft_charjoin((left[0] % 10) + '0', temp, 'l');
  75.         left[0] /= 10;
  76.     }
  77.     if (left[0] > 0)
  78.         temp = ft_charjoin((left[0] % 10) + '0', temp, 'l');
  79.     return (temp);
  80. }
  81.  
  82. char        *multi1_char(char *nbr1, int nbr2)
  83. {
  84.     int     i;
  85.     char    *temp;
  86.  
  87.     if (nbr1[0] == '0' || nbr2 == 0)
  88.         return ("0");
  89.     i = -1;
  90.     temp = ft_strdup(nbr1);
  91.     while (++i < nbr2 - 1)
  92.         temp = add_char(temp, nbr1);
  93.     return (temp);
  94. }
  95.  
  96. char        *multi_char(char *nbr1, char *nbr2)
  97. {
  98.     int         i;
  99.     char        *temp;
  100.     int         j;
  101.     char        *temp1;
  102.     int         t;
  103.     char        *mul;
  104.  
  105.     mul = ft_strnew(0);
  106.     temp = ft_strnew(1);
  107.     j = 0;
  108.     i = ft_strlen(nbr2);
  109.     while (--i >= 0)
  110.     {
  111.         t = -1;
  112.         temp1 = multi1_char(nbr1, nbr2[i] - '0');
  113.         //temp1 = multi1_char(temp1, 10*j);
  114.         /*while (++t < j)
  115.             temp1 = ft_strjoin(temp1, "0");*/
  116.         temp1 = ft_strjoin(temp1, mul);
  117.         temp = add_char(temp, temp1);
  118.         mul = ft_strjoin("0", mul);
  119.         j++;
  120.     }
  121.     return (temp);
  122. }
  123.  
  124. char    *power_char(int nbr1, int nbr2)
  125. {
  126.     char        *temp;
  127.  
  128.     temp = ft_strnew(0);
  129.     if (nbr2 == 1)
  130.         return (ft_itoa(nbr1));
  131.     if (nbr2 % 2 == 0)
  132.     {
  133.         temp = power_char(nbr1, nbr2 / 2);
  134.         return (multi_char(temp, temp));
  135.     }
  136.     else
  137.     {
  138.         nbr2 -= 1;
  139.         temp = power_char(nbr1, nbr2 / 2);
  140.         return(multi_char(ft_itoa(nbr1), multi_char(temp, temp)));
  141.     }
  142. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top