Probleme en C

Fermé
touf_truc Messages postés 57 Date d'inscription samedi 21 octobre 2006 Statut Membre Dernière intervention 23 avril 2007 - 2 févr. 2007 à 14:44
mamiemando Messages postés 33268 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 septembre 2024 - 3 févr. 2007 à 13:38
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.

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
2 févr. 2007 à 16:56
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.
0
mamiemando Messages postés 33268 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 septembre 2024 7 780
2 févr. 2007 à 20:42
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
0
plop! Messages postés 54 Date d'inscription jeudi 1 février 2007 Statut Membre Dernière intervention 16 mai 2007 27
3 févr. 2007 à 07:21
Tu prévoies les architectures 256 bits avec tes unsigned int de 100 digits ? ;o)
0
mamiemando Messages postés 33268 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 septembre 2024 7 780
3 févr. 2007 à 13:38
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
0