Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1382 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Addition simple et ensuite avec retenue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Addition simple et ensuite avec retenue

n°1805610
immikimaru
Ding dong song
Posté le 28-10-2008 à 18:21:30  profilanswer
 

voila je suis en pleine bistro epitech, et je suis en tatonnement sur l'addition :fou:
Je voudrais savoir comment vous evaluez mon code et comment se fait une retenue
 

Code :
  1. / ON ADDITIONNE ICI DEUX CHAINES DE CARACTERES
  2. // --------------------------------------------
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. int    main()
  6. {
  7.   int    i;
  8.   char    *result;
  9.   char  *rev_result;
  10.   char    *nombre1;
  11.   char    *nombre2;
  12.   char    *rev_nb1;
  13.   char    *rev_nb2;
  14.   nombre1 = "26112323";
  15.   nombre2 = "12345562";
  16.   rev_nb1 = (my_strdup(nombre1));
  17.   rev_nb2 = (my_strdup(nombre2));
  18.  
  19.   my_revstr(rev_nb1);
  20.   my_revstr(rev_nb2);
  21.   i = 0;
  22.   result = malloc(my_strlen(nombre1 + 1) * sizeof(nombre1));
  23.  
  24.   while(rev_nb1[i] != '')
  25.     {
  26.       result[i] = (rev_nb1[i] - '0') + (rev_nb2[i] - '0');
  27.       i++;
  28.     }
  29.   rev_result = strdup(result);
  30.   my_revstr(rev_result);
  31.    
  32.   int j;
  33.   j = 0;
  34.   while(rev_nb1[j] != ' 0')
  35.     {
  36.       my_putchar(result[j] + 48);
  37.       j++;
  38.     }
  39.   my_putchar('n');
  40.   return(0);
  41. }


Merci de vos reponses ^^


Message édité par immikimaru le 29-10-2008 à 09:51:16

---------------
Mon Feed-Back  
mood
Publicité
Posté le 28-10-2008 à 18:21:30  profilanswer
 

n°1805714
Taz
bisounours-codeur
Posté le 28-10-2008 à 23:29:14  profilanswer
 

t'as pas les bases sur les char* / chaînes de caractères. A commencer par le fait qu'elles se terminent par un 0. après l'algorithme c'est pas bon non plus vu que tu ne gères pas la retenu et sa propagation.

n°1805765
MEI
|DarthPingoo(tm)|
Posté le 29-10-2008 à 09:23:07  profilanswer
 

c'est quoi l'interet de ce truc ? :o
 
En 1 ligne c'est fait :

Code :
  1. atoi(itoa(b) + itoa(a));


 
J'ai jamais comprisl l'interêt de reinventer eternellement la roue... surtout quand en plus on la fait ovale. :D

Message cité 1 fois
Message édité par MEI le 29-10-2008 à 09:23:21

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1805776
Taz
bisounours-codeur
Posté le 29-10-2008 à 09:38:36  profilanswer
 

MEI a écrit :

c'est quoi l'interet de ce truc ? :o
 
En 1 ligne c'est fait :

Code :
  1. atoi(itoa(b) + itoa(a));


 
J'ai jamais comprisl l'interêt de reinventer eternellement la roue... surtout quand en plus on la fait ovale. :D


1) c'est un exercice
2) pour supporter une taille arbitraire

n°1805778
immikimaru
Ding dong song
Posté le 29-10-2008 à 09:40:14  profilanswer
 

Taz a écrit :

t'as pas les bases sur les char* / chaînes de caractères. A commencer par le fait qu'elles se terminent par un 0. après l'algorithme c'est pas bon non plus vu que tu ne gères pas la retenu et sa propagation.


Je sais que les chaines de caracteres se terminent par un ''...
Mais justement je ne sais pas comment gerer la retenue et la propagation!


---------------
Mon Feed-Back  
n°1805784
MEI
|DarthPingoo(tm)|
Posté le 29-10-2008 à 09:46:19  profilanswer
 

immikimaru a écrit :


Mais justement je ne sais pas comment gerer la retenue et la propagation!


 
Bah comme tu le fait quand tu comptes sur papier. ;)


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1805825
Taz
bisounours-codeur
Posté le 29-10-2008 à 11:50:35  profilanswer
 

immikimaru a écrit :


Je sais que les chaines de caracteres se terminent par un ''...
Mais justement je ne sais pas comment gerer la retenue et la propagation!


bah justement, 0 c'est pas '' qui n'existe pas d'ailleurs.

n°1805829
MEI
|DarthPingoo(tm)|
Posté le 29-10-2008 à 11:57:54  profilanswer
 

\0 ... ;)


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1805890
immikimaru
Ding dong song
Posté le 29-10-2008 à 14:25:56  profilanswer
 

voici mon code legerement ameliore  :o
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 :
  1. // ON ADDITIONNE ICI DEUX CHAINES DE CARACTERES                                                                                                           
  2. // --------------------------------------------
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. int    max(int nb1, int nb2)
  6. {
  7.     if (nb1 < nb2)
  8.     {
  9.         return(nb2);
  10.     }
  11.     return(nb1);
  12. }
  13. int    main()
  14. {
  15.   int    i;
  16.   int    j;
  17.   int    c;
  18.   int    a;
  19.   int    b;
  20.   int   nbcaract;
  21.   char    *result;
  22.   char  *rev_result;
  23.   char    *nombre1;
  24.   char    *nombre2;
  25.   char    *rev_nb1;
  26.   char    *rev_nb2;
  27.   nombre1 = "232";
  28.   nombre2 = "132";
  29.   rev_nb1 = (my_strdup(nombre1));
  30.   rev_nb2 = (my_strdup(nombre2));
  31.  
  32.   my_revstr(rev_nb1);
  33.   my_revstr(rev_nb2);
  34.   i = 0; // Variable de l'incrementation
  35.   c = 0; // Variable de la retenue
  36.   nbcaract = max(my_strlen(nombre1),my_strlen(nombre2));
  37.   result = malloc(nbcaract);
  38.   while(i < nbcaract)
  39.     {
  40.       a = 0;
  41.       if (rev_nb1 != ' \0 ')
  42.       {
  43.           a = (rev_nb1[i] - '0');   
  44.       }
  45.       b = 0;
  46.       if (rev_nb2 != '')
  47.       {
  48.           b = (rev_nb2[i] - '0');
  49.       }
  50.       result[i] = (a + b + c) % 10; // pour ne prendre que les unites
  51.       c = (a + b + c - result[i]) / 10; // pour ne prendre que les dixaines
  52.       i++;
  53.     }
  54.   rev_result = strdup(result);
  55.   my_revstr(rev_result);
  56.   if (c > 0)
  57.     {
  58.       my_putchar(c + '0');
  59.     }
  60.   j = 0;
  61.   while(rev_result[j] != ' \0 ')
  62.     {
  63.       my_putchar(rev_result[j] + '0');
  64.       j++;
  65.     }
  66.   my_putchar('n');
  67.   return (0);
  68. }
 


Les '' sont en fait des bakslash zero


Message édité par immikimaru le 29-10-2008 à 16:12:31

---------------
Mon Feed-Back  
n°1805914
Taz
bisounours-codeur
Posté le 29-10-2008 à 15:03:32  profilanswer
 

malloc(taille + 1) pour le zéro final ...
 
Encore une fois '' ça n'existe pas. if (c) ou bien if (c != 0) ou bien if (c != '\0') ...

mood
Publicité
Posté le 29-10-2008 à 15:03:32  profilanswer
 

n°1805937
immikimaru
Ding dong song
Posté le 29-10-2008 à 15:33:19  profilanswer
 

'' le code ne laffiche pas ds ce forum... ca remplace le /0


---------------
Mon Feed-Back  
n°1805973
matafan
Posté le 29-10-2008 à 15:53:36  profilanswer
 

Code :
  1. '\0'

n°1806228
immikimaru
Ding dong song
Posté le 30-10-2008 à 10:31:34  profilanswer
 

c bon j'ai reussi l'addition, elle marche parfaitement avec les nombres infinis... maintenant la soustraction


---------------
Mon Feed-Back  
n°1810885
Mxtrem
Posté le 11-11-2008 à 18:03:42  profilanswer
 

Cay pas à la norme :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Addition simple et ensuite avec retenue

 

Sujets relatifs
[NSIS] CheckBox le + simple, ajout de checkbox au dernier ecran[SQL] Aide à la réalisation d'une simple requête update
gsoap2 utilisable avec un simple fichier XML[Résolu]Petite question trés simple pour comparaison entre deux chaine
simple question de type de variablePHP - Portée d'1 variable (array) hors d'1 simple "while"
Exemple simple JMX ?Reqûête qui a l'air simple... Mais en fait pas du tout!
chaines de caractere... si simple !Besoin d'aide pour programmation simple
Plus de sujets relatifs à : Addition simple et ensuite avec retenue


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR