telecomakram
Messages postés14Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 2 décembre 2007
-
19 sept. 2007 à 06:54
soukyyy
Messages postés4Date d'inscriptionsamedi 31 mai 2008StatutMembreDernière intervention28 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.
acx01b
Messages postés280Date d'inscriptiondimanche 7 septembre 2003StatutMembreDernière intervention 8 juillet 20146 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");
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;
};