Additionner les chiffres d'un nombre...

kcou -  
jisisv Messages postés 3678 Statut Modérateur -
Additionner les chiffres d'un nombre...
...jusqu'a ne trouver qu'un seul chiffre

Salut,

Je souhaiterais savoir comment additionner tous les chiffres d'un nombre jusqu'à ne trouver qu'un seul chiffre...

Je me casse la tête mais je ne trouve pas. Je sais seulement additionner une fois tous les chiffres d'un nombre.

Mais j'aimerais répéter cette opération plusieurs fois... jusqu'à ne trouver qu'un seul chiffre

Merci

2 réponses

  1. KikiAmboara Messages postés 27 Statut Membre
     
    Voici le code qui va resoudre ton probleme:

    int toChiffre( int nombre )
    {
    int temp;
    temp = nombre;
    while( temp%10 > 9 )
    {
    temp = (temp/10) + (temp%10);
    }
    return temp;
    }
    
    0
    1. kcou
       
      Ca ne fonctionne pas vraiment ... un problème d'accolades semble-t-il
      0
  2. jisisv Messages postés 3678 Statut Modérateur 936
     
    Regrde ceci:
    #include <stdlib.h>
    #include <stdio.h>
    
    int mod9(int x)
    {
      int c, res = x;
      while (res > 9 )
        {
          res = 0;
          while ( x > 0)
     {
       c = x % 10 ;
       x = x / 10 ;
       res += c;
     }
          x = res;
        }
      return x;
    }
    
    unsigned int values[] = { 7, 12, 23, 271, 314, 1234567};
    
    int main(int argc, char* argv[])
    {
      int i;
      for( i=0 ; i< sizeof(values)/sizeof(unsigned int) ; i++)
        {
          printf("%d modulo 9 = %d | %d\n", values[i], mod9(values[i]), values[i] % 9);
        }
      return EXIT_SUCCESS;
    }


    johand@bata:~/src/CCM/C$ ./mod9 
    7 modulo 9 = 7 | 7
    12 modulo 9 = 3 | 3
    23 modulo 9 = 5 | 5
    271 modulo 9 = 1 | 1
    314 modulo 9 = 8 | 8
    1234567 modulo 9 = 1 | 1


    Il faut encore vérifier que res !=9 dans mod9, mais ça je te le laisse.
    Tu peux aussi écrire une fonction récursive...

    Gates gave ^W sold you the windows.
    GNU gave us the whole house.(Alexandrin)
    0