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

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
kcou
 
Ca ne fonctionne pas vraiment ... un problème d'accolades semble-t-il
0
jisisv Messages postés 3678 Statut Modérateur 934
 
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