[c] Inverser un integer

Fermé
Marc - 14 sept. 2005 à 20:23
 Marc - 15 sept. 2005 à 18:54
Bonsoir,

Existe t-il une fonction en C, qui inverse un int ? Je m'explique, on a par exemple un int1 = 12345, et on aimerait obtenir int2 = 54321 ...
J'ai trouvé une fonction équivalente en C++, pour des chaînes de carcatères, mais en C que dalle.. donc si qqn pouvait m'éclairer !

Merci d'avance,

2 réponses

blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
14 sept. 2005 à 22:13
Salut,
la seule inversion d'un entier qui soit digne de ce nom mathématiquement
c'est 1/x
la seule inversion qui soit recevable en logique booléenne
c'est " !" en C ou NOT en pascal

ce que tu demandes, c'est inverser les caractères d'une chaine
le genre d'exercices de base de la plupart des cours de langage C

1/ convertir ton integer en chaine :
int mon_entier=54321;
sprintf(chaine,"%d",mon_entier);

2/ inverser l'ordre des caractères de la chaine
int longueur=strlen(chaine);
for (int i=0;  i<(longueur/2); i++)
  { 
  char c=chaine[i];
  chaine[i]=chaine[longueur-i-1];
  chaine[longueur-i-1]=c; 
  }

3/ on remet le résultat dans un integer
sscanf(chaine,"%d",&mon_entier);


attention aussi au 0 qui se comporte comme les autres chiffres,
où 5 sera différent de 05 ou encore de 005, comme quoi appeler ça une inversion est une hérésie


cordialement
0
Merci pour cette réponse, et encore désolé pour le problème d'appellation :)
0