Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1597 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Nombre en ordre inverse

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nombre en ordre inverse

n°1431203
Gattuso
Posté le 25-08-2006 à 09:59:52  profilanswer
 

Bonjour,
 
le programme suivant à pour but de demander un nombre et de l'afficher en ordre inverse.
Le problème que j'ai, c'est que ce n'est pas le cas à l'affichage.
Voici mon code :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int g(unsigned int n, char *res){
  4.   if (n>9) return 1;
  5.   *res = '0' + n;
  6.   return 0;
  7. }
  8. int f(unsigned int n, char *s, size_t *l){
  9.   char c; size_t cl=*l;
  10.   if(n == 0)
  11.     return 0;
  12.   g(n%10U, s);
  13.   c = *s;
  14.   ++*l;
  15.   f(n/10U, s+1, l);
  16.   if(cl<*l/2){
  17.     *s=s[*l-cl-1-cl];
  18.     s[*l-cl-1-cl]=c;
  19.   }
  20.   return 0;
  21. }
  22. int main(void){
  23.   unsigned int n;
  24.   char buf[BUFSIZ];/*Suppose tres grand*/
  25.   size_t l=0;
  26.   printf("Entrez un nombre: " );
  27.   if(scanf("%u",&n)==1){
  28.     if(n!=0)
  29.       f(n, buf, &l);
  30.     else{
  31.       buf[0]='\0';
  32.       ++l;
  33.     }
  34.     buf[l]='\0';
  35.     fprintf(stdout, "%s %u\n", buf, l);
  36.     return EXIT_SUCCESS;
  37.   }
  38.   else return EXIT_FAILURE;
  39. }


Ce que j'obtiens :

Code :
  1. $ ./test
  2. Entrez un nombre: 45
  3. 45 2


 
Je voudrais aussi savoir comment modifier le main pour être sûr que l'entier sera positif
 
Merci

mood
Publicité
Posté le 25-08-2006 à 09:59:52  profilanswer
 

n°1431266
Trap D
Posté le 25-08-2006 à 11:29:18  profilanswer
 

Tu peux écrire ton nombre dans une chaine et inverser la chaîne par exemple.

n°1431383
doton
Malloc could not alloc memory.
Posté le 25-08-2006 à 13:57:00  profilanswer
 

Trap D a écrit :

Tu peux écrire ton nombre dans une chaine et inverser la chaîne par exemple.


J aurais fait la meme chose ...
 
et j aurais de plus eviter ce genre de salete

Code :
  1. char buf[BUFSIZ];/*Suppose tres grand*/


vraiment pas propre du tout


Message édité par doton le 25-08-2006 à 14:06:35
n°1432269
fhr
Posté le 27-08-2006 à 23:15:35  profilanswer
 

+1, avec une chaine ça se fait sans problème, un fonction récursive pour afficher la chaîne à l'envers et c'est plié. En plus, ça évite de se limiter aux nombres.

n°1432445
Trap D
Posté le 28-08-2006 à 12:01:57  profilanswer
 

En récursif, 8 lignes dont 4 pour les accolades !

n°1432506
fhr
Posté le 28-08-2006 à 14:12:16  profilanswer
 

Trap D a écrit :

En récursif, 8 lignes dont 4 pour les accolades !


 
Effectivement  :)  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Nombre en ordre inverse

 

Sujets relatifs
[Recherche dans SQL] L'ordre des termesProblème avec nombre d'enregistrements dans une table
Comment éviter de tricher sur le nombre de fois qu'un lien est cliqué?trier une listbox par ordre alpha.
[Résolu] [Algo] Stabilisation et Système du premier ordre[VBA] Compter le nombre de checkboxes cochées
[ Batch Dos ] Ordre d'execution batch dosRecuperer le nombre d'enregistrement modifier avec un UPDATE
Compter le nombre de mots d'un texteNombre de caractere dans un fichier texte
Plus de sujets relatifs à : Nombre en ordre inverse


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR