#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; }