Suite

telecomakram Messages postés 14 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 2 décembre 2007 - 19 sept. 2007 à 06:54
soukyyy Messages postés 4 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 28 juillet 2011 - 19 juin 2008 à 00:50
bonjour,

J'ai passer environ 4 heures a la recherche d une solution mais j ai pas trouver qlq'un peu m'aider s il vous plaît
merci
-------
On s’intéresse aux nombres entiers de n chiffres ayant la




propriété

suivante: en partant deschiffres composant ces nombres, on compose une suite en calculant la somme des n derniers

nombres de la suite pour déterminer le suivant. La suite fournit à un moment le nombre de départ.




Exemple:





K=197 (les chiffres de départ sont 1, 9 et 7).


1,9,7,17(=1+9+7),33(=9+7+17),57(=7+17+33),107(=17+33+57),197(=33+57+107)


Nous concluons donc que 197 possède la propriété énoncée plus haut puisque ce nombre se


retrouve lui-même dans la suite.





Contre-exemple :





K=25 (2 et 5 sont les chiffres de départ).


2,5,7,12,19,31...


25 n’a pas la propriété puisque 25 ne se retrouve pas dans la suite qu’il génère.


Écrivez un algorithme qui affiche tous les nombres de 4 chiffres qui respectent la propriété en


question ici.

10 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
19 sept. 2007 à 08:46
tu n'as pas le temps de le faire toi-même????

louis14
0
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
19 sept. 2007 à 16:42
salut

qu'est-ce qui te pose problème ??

disons que tu as ta fonction:
int tester (int nombre);
qui renvoie 1 si le nombre respecte la propriété, et 0 s'il ne la respecte

a priori ta fonction main ressemblera à ceci:

int main() {
  int i;
  for (i = 1000; i < 10000; i++) {
     if (tester(i) == 1) printf("%d\n",i);
  }
}

ensuite, pour ta fonction tester il faut que tu saches trouver les chiffres (décimaux) qui composent un nombre
tu pourras le faire avec les opérations % et /
par exemple:

int i = 125;
while(i != 0) {
  printf("%d ", i%10);
  i /= 10;
}
printf("\n");

affichera 1 2 5
0
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
19 sept. 2007 à 16:43
pardon ça affichera 5 2 1 bien sûr
0
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
19 sept. 2007 à 19:46
Je dirais :

1104
1537
2208
2580
3684
4788
7385
7647
7909

rrk275
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
telecomakram Messages postés 14 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 2 décembre 2007
19 sept. 2007 à 20:08
merci
0
telecomakram Messages postés 14 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 2 décembre 2007
20 sept. 2007 à 04:07
Bonjour,

rrk275 comment t'as trouvé ces résultat s'il te plaît, laformule càd.

merci
0
telecomakram Messages postés 14 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 2 décembre 2007
21 sept. 2007 à 07:07
bonjour,
Est ce que on peut resoudre le problem sans utilise les tableaux, ni des fonctions

merci
0
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
21 sept. 2007 à 18:00
#include <stdio.h>
#include <vector>
#include <map>

const int id_max = 3 ;

bool atteint( int cible , int nb[] , bool aff )
{
  if( nb[0] == cible )
    return true ;
  if( nb[0] > cible )
    return false ;
  int f = 0 ;
  for( int i = 0 ; i <= id_max ; i++ )
    {
      if(aff)
    printf( "%d " , nb[ i ] ) ;
      f += nb[ i ] ;
      nb[ i ] = nb[ i + 1 ] ;
    }
  if( aff )
    printf("\n");
  nb[ id_max ] = f ;
  return atteint( cible , nb , aff ) ;
}

bool teste( int nb , bool aff = false )
{
  int chiffres[ 5 ] ;
  int base = 1000 ;
  for( int c = 0 ; c <= id_max ; c++ )
    {
      chiffres[ c ] = (nb/base) % 10 ;
      base /= 10 ;
    }
  return atteint( nb , chiffres , aff );
}

int main()
{
   for( int nombre = 1000 ; nombre < 10 * 1000 ; nombre++ )
    if( teste( nombre ) )
      {
    //teste( nombre , true ) ;
    printf( "%d\n" , nombre ) ;
      }
  return 0;
};

rrk275
0
telecomakram Messages postés 14 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 2 décembre 2007
22 sept. 2007 à 00:14
vraiment un grand merci
0
soukyyy Messages postés 4 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 28 juillet 2011
19 juin 2008 à 00:50
stp telecomakram chui debutante en programmation je cherche un mini projet sur gestion d'un service étudiant pourriez vous m'aider ??
0
Rejoignez-nous