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.
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
.. ou quelque chose dans ce goût-là...
Bonne chance
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