Previous Next Up Index Contents

Exercice 9.23

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main()
{
 /* Déclarations */
 char INTRO[51]; /* chaîne pour l'introduction des données   */
 char *MOT[10];  /* Tableau de pointeurs sur les 10 chaînes  */
 int I;     /* ligne à partir de laquelle MOT est trié */
  int J;     /* indice courant */
 char *AIDE;/* pour la permutation des pointeurs  */
 int FIN;   /* ligne où la dernière permutation a eu lieu */
     /* permet de ne pas trier un sous-ensemble déjà trié */
 
 /* Saisie des données et allocation dynamique de mémoire */
 puts("Introduire 10 phrases terminées chaque fois"
      " par un retour à la ligne :");
 for (I=0; I<10; I++)
     {
      /* Lecture d'une phrase */
      printf("Phrase %d : ",I);
      gets(INTRO);
      /* Réservation de la mémoire */
      MOT[I] = malloc(strlen(INTRO)+1);
      if (MOT[I])
           strcpy(MOT[I], INTRO);
      else
          {
           printf("\aPas assez de mémoire \n");
           exit(-1);
          }
      }


 /* Tri du tableau par propagation de l'élément maximal. */
  for (I=9 ; I>0 ; I=FIN)
      {
       FIN=0;
       for (J=0; J<I; J++)
           if (strcmp(MOT[J],MOT[J+1])>0)
             {
              FIN=J;
              AIDE     = MOT[J];
              MOT[J]   = MOT[J+1];
              MOT[J+1] = AIDE;
             }
      }
 
 /* Affichage du tableau */
 puts("Tableau trié :");
 for (I=0; I<10; I++)
      puts(MOT[I]);
 return 0;
}


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber