Probleme en C
bonsoir;
Par definition le miroir d'un nombre entier nb est le nombre entier obtenu en lisant nb de droite a gauche. par exemple si nb=1234, alors miroir (nb)=4321.
ecrire une fonction qui accepte comme parametre un nombre entier et qui retourne son miroir.
merci.
Par definition le miroir d'un nombre entier nb est le nombre entier obtenu en lisant nb de droite a gauche. par exemple si nb=1234, alors miroir (nb)=4321.
ecrire une fonction qui accepte comme parametre un nombre entier et qui retourne son miroir.
merci.
Configuration: Windows XP Firefox 2.0.0.1
3 réponses
-
Salut.
Il suffit de découper ton nombre (4321) en chiffre et de les écrire à l'envers.
l'algo : trouver la puissance de 10 la plus haute du nombre (ici 3)
tu divise ce nombre par cette puissance (donc ici par 1000) et tu conserve la partie entière (ici 4)(automatique lors de la division d'entier normalement).
Donc, premier nombre 4.
Tu reprends ton nombre d'orignie, tu lui enleve le denier nombre trouver (4)fois la puissance (1000) et tu divise le résultat par la puissance inférieur inférieur (100), tu récupère la partie entière etc...
tu obtiens ainsi 4,3 ,2, 1 comme entier.
Il ne te reste plus qu'à les écrire dans l'autre sens:
1*10^3+2*10^2+3*10^1+4
Voilà, j'espère avoir été clair. -
Bah tu peux directement utiliser une chaine de caractère et atoi :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/atoi.3.html
#include <string.h> #include <stdio.h> int miroir(unsigned int x){ char buffer1[100]; char buffer2[100]; unsigned int n,i; sprintf(buffer1,"%d",x); n = strlen(buffer1); // Recopier de droite à gauche for(i=0;i<n;++i) buffer2[n-1-i]=buffer1[i]; return atoi(buffer2); }
.. ou quelque chose dans ce goût-là...
Bonne chance -
Boooarf :-) C'est juste que j'avais pas envie de me prendre la tête. Manifestement en plus c'est un exercice pour apprendre les boucles. Et puis bon qu'est ce qu'un buffer de 100 char de nos jours :p