| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 
 |  
#include <stdlib.h>
 
int  conversion(char *nb)
{
  int   i;
 
  for (i = 0; nb[i]; i++)
    {
      nb[i] -= '0';
      if (nb[i] < 10)
        {
          my_putstr("Conversion ok!\n");
        }
    }
}
 
void    putzero(int *nb, int size)
{
  for (; size > 0; size--)
    {
      nb[size] = 0;
      printf("Affectation de putzero :%d\n", nb[size]);
    }
}
 
int     add_carry(int *nb)
{
  int   pos;
 
  for (pos = 0; nb[pos] >= 10; pos++)
    {
      nb[pos + 1] += nb[pos] / 10;
      nb[pos] %= 10;
    }
}
 
int     *do_oplus(char *nb1, int len1, char *nb2, int len2)
{
  int   pos1;
  int   pos2;
  int   *res; // initialisation tab entier pour stocker les resultats                                                                        
  int   i;
 
  pos1 = len1 - 1; // curseur en derniere position                                                                                           
  pos2 = len2 - 1;
  res = malloc(sizeof (*res) * (len1 + len2)); // allocation de la memoire                                                                   
  putzero(res , len1 + len2); // affectation de 0000000 sur le resultat                                                                      
  for (i = 0; i < len1+len2; i++)
    {
      printf("%d",res[i]);
    }
  for (pos2 = len2 - 1; pos2 >= 0; pos2--)
 {
      for (pos1 = len1 - 1; pos1 >= 0; pos1--)
        {
          i = (len2 - pos2 - 1) + (len1 - pos1 - 1);
          res[i] = nb1[pos1] + nb2[pos2];
          printf("\nres[%d] = %d",i, res[i]);
        }
    }
  add_carry(res + i);
  return(res);
}
 
int     addition(char *nb1, char *nb2)
{
  int   *res;
  int   len1;
  int   len2;
 
  len1 = strlen(nb1);
  len2 = strlen(nb2);
  conversion(nb1);
  conversion(nb2);
  res = do_oplus(nb1, len1 , nb2, len2);
}
 
int     main(int ac, char **av)
{
  if ( ac != 3)
    my_putstr("Bad usage of function\nFunction usage: ./a.out nb1 nb2");
  else
    printf("\nresultat de nb1 * nb2 = %d",(addition(av[1], av[2])));
} |