Probleme en C

touf_truc Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 299
 
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 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
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   Statut Membre Dernière intervention   27
 
Tu prévoies les architectures 256 bits avec tes unsigned int de 100 digits ? ;o)
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
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