Décomposition en puissances entières

ScorpionTiti Messages postés 11 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 2 juin 2004 - 26 mai 2004 à 11:32
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004 - 26 mai 2004 à 15:55
Bonjour!

Je suis novice en la matière et j'aimerais qu'on me dépanne sur un sujet en langage C.

J'aimerais effectuer un programme me permettant d'afficher à l'écran les puissances de dix d'un nombre entier. Ex :
5412 = 2*1 + 1*10 + 4*100 + 5*1000.

Merci d'avance pour celui qui me donnera la solution.

4 réponses

shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
26 mai 2004 à 13:00
Salut!
tu peux essayer avec ca:

#include <stdio.h>
int main(void)
{
int iNb = 3659783; //tu peux mettre ce que tu veux!
float fNb;int i 0,j,temp,puiss 1;
fNb = (float)iNb;
do
{
fNb = fNb/10;
i++;
}
while(fNb>1);
i--;
for(j = 0;j<i;j++)
puiss = 10 * puiss;
printf("%i = ",iNb);
for(j = 0;j<i;j++)
{
temp = (int)(10*fNb);
printf("%i * %i",temp,puiss);
fNb = 10 * fNb - temp;
printf(" + ");
puiss = puiss / 10;
}
printf("%i * 1\n",(int)(10*fNb) );
}

@+
SHIRAH
0
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
26 mai 2004 à 13:02
Pardon j'ai oublié le "return 0;" avant la dernière accolade fermante!

@+
SHIRAH
0
ScorpionTiti Messages postés 11 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 2 juin 2004
26 mai 2004 à 13:15
Merci bcp pour ton aide. Je vais l'essayer tout de suite.

@ bientôt

ScorpionTiti
0
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
26 mai 2004 à 15:55
Tiens voila une version plus simple à comprendre:

#include <stdio.h>
int main(void)
{int i 0,puiss 1;
int iNb2,iNb = 12345678; //ou tout ce que tu veux pour iNb
float fNb = (float)iNb;
printf("%i = ",iNb);
do
{
iNb2 = (int)(10 * (fNb/10 - (int)(fNb/10) ));
printf("%i*%i",iNb2,puiss);
puiss*=10;
fNb = fNb/10- iNb2/10;
if(fNb>1)
printf(" + ");
}
while(fNb>1);
return 0;
}

SHIRAH
0
Rejoignez-nous