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;
}
Feedback - Copyright © 1993,1996,1997 F.Faber