voici mon code legerement ameliore
seulement g encore 3 GROS problemes:
- Si je fais 100 + 200 , j'obtiens une ligne vierge (surement a cause du 0)
- Si je fais 9 + 1, j'obtiens 1
- Si je fais 212 + 20 j'ai *32
Code :
- // ON ADDITIONNE ICI DEUX CHAINES DE CARACTERES
- // --------------------------------------------
- #include <stdlib.h>
- #include <stdio.h>
- int max(int nb1, int nb2)
- {
- if (nb1 < nb2)
- {
- return(nb2);
- }
- return(nb1);
- }
- int main()
- {
- int i;
- int j;
- int c;
- int a;
- int b;
- int nbcaract;
- char *result;
- char *rev_result;
- char *nombre1;
- char *nombre2;
- char *rev_nb1;
- char *rev_nb2;
- nombre1 = "232";
- nombre2 = "132";
- rev_nb1 = (my_strdup(nombre1));
- rev_nb2 = (my_strdup(nombre2));
-
- my_revstr(rev_nb1);
- my_revstr(rev_nb2);
- i = 0; // Variable de l'incrementation
- c = 0; // Variable de la retenue
- nbcaract = max(my_strlen(nombre1),my_strlen(nombre2));
- result = malloc(nbcaract);
- while(i < nbcaract)
- {
- a = 0;
- if (rev_nb1 != ' \0 ')
- {
- a = (rev_nb1[i] - '0');
- }
- b = 0;
- if (rev_nb2 != '')
- {
- b = (rev_nb2[i] - '0');
- }
- result[i] = (a + b + c) % 10; // pour ne prendre que les unites
- c = (a + b + c - result[i]) / 10; // pour ne prendre que les dixaines
- i++;
- }
- rev_result = strdup(result);
- my_revstr(rev_result);
- if (c > 0)
- {
- my_putchar(c + '0');
- }
- j = 0;
- while(rev_result[j] != ' \0 ')
- {
- my_putchar(rev_result[j] + '0');
- j++;
- }
- my_putchar('n');
- return (0);
- }
|
Les '' sont en fait des bakslash zero
Message édité par immikimaru le 29-10-2008 à 16:12:31
---------------
Mon Feed-Back