Transformer un entier en deux nombres composé des memes chiffres ordonnés par ordre croissant et décroissant

Description

Programme permettant de transformer un nombre en deux nombres composés des mêmes chiffres ordonnés de manière croissante et décroissante sans utiliser de tableaux.

Source / Exemple :


/* =============================================================================
  
   OBJET            : Programme permettant de transformer un nombre en deux nombres composés
                      des mêmes chiffres ordonnés de manière croissante et décroissante. 
                      N'utilise pas les tableaux
   --------------------------------------------------------------------------------
   DATE DE CREATION : 10/03/2010
   AUTEUR           : Thebroyeur
   --------------------------------------------------------------------------------
   MODIFICATIONS (   n) date - auteur - description )
   ============================================================================= */

#include <stdio.h>

/*=================================
     FONCTION nombreCroissant
=================================*/
// retourne un entier contenant les memes chiffres que nombre dans l'ordre croissant
// Pour chaque chiffre de nombre, la fonction insère le chiffre dans nb_croissant de telle sorte que
// nb_croissant est ses chiffres triès par ordre croissant
/*===============================*/

void nombreCroissant(long nombre)

{
 
  long nb_croissant=0;
  long puis=1;   /* utiliser pour gerer les puissance de 10*/
  long reste=0; 
  long chiffre;

  while (nombre!=0)
    {chiffre=nombre%10;
      puis=1;reste=0;
      while ((nb_croissant!=0)&&(nb_croissant%10>chiffre))
	/* nb_croissant contient les chiffres de nombre classé par ordre croissant. Ces chiffres sont ceux obtenus 
           par les %10*/
	{ reste+=puis*(nb_croissant%10);
	  puis*=10;
	  nb_croissant/=10;
	}
      /* reste contient les chiffres classé par ordre croissant de nb_croissant se situant entre la virgule et la place 
	 final de chiffre dans nb_croissant*/
      nb_croissant=(nb_croissant*10+chiffre)*puis+reste;
      nombre/=10;
    }

      
  
  printf("Croissant :  %ld \n",nb_croissant);  
  
}

/*=================================
     FONCTION nombreDecroissant
=================================*/
// retourne un entier contenant les memes chiffres que nombre dans l'ordre decroissant
// Pour chaque chiffre de nombre, la fonction insère le chiffre dans nb_decroissant de telle sorte que
// nb_decroissant est ses chiffres triès par ordre decroissant
/*===============================*/

 
void nombreDecroissant(long nombre)
/* retourne un entier contenant les memes chiffres que nombre dans l'ordre decroissant*/
{
 
  long nb_decroissant=0;
  long puisd=1;
  long rested=0;
  long chiffred;

  while (nombre!=0)
    {chiffred=nombre%10;
      puisd=1;rested=0;
      while ((nb_decroissant!=0)&&(nb_decroissant%10<chiffred))
	/* nb_decroissant contient les chiffres de nombre classé par ordre decroissant. Ces chiffres sont ceux obtenus 
           par les %10*/
	{ rested+=puisd*(nb_decroissant%10);
	  puisd*=10;
	  nb_decroissant/=10;
	}
      /* reste contient les chiffres classé par ordre decroissant de nb_decroissant se situant entre la virgule et la place 
	 final de chiffre dans nb_decroissant*/
      nb_decroissant=(nb_decroissant*10+chiffred)*puisd+rested;
      nombre/=10;
    }

      
  
  printf("Decroissant :  %ld \n",nb_decroissant);  
  
}

/*=================================
     FONCTION main
=================================*/
/*===============================*/

int main()
{
  long nombre;
  printf("Entrez un nombre \n");
  scanf("%ld",&nombre);
  nombreCroissant(nombre);
  nombreDecroissant(nombre);

  return 1;
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.