home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- * CH10_11.C Trier des chaεnes de mΩme longueur *
- * avec un tableau de pointeurs *
- *********************************************************************/
- #include<stdio.h>
- #include<alloc.h>
- #include<string.h>
-
- #define dim 40
- #define nb_chaines 10
-
- void LitChaine( char*, int);
- void TrierChaines( int, char *t[]);
-
- main( void)
- {
- int i, n= -1;
- char *t[nb_chaines];
-
- printf(" Saisie de chaεnes de moins de %d caractΦres.\n\t"
- " Composez le mot fin pour sortir.\n\n", dim);
- do
- {
- if(++n> nb_chaines- 1) break;
- /* allocation de mΘmoire */
- t[n]= ( char*) malloc( dim* sizeof( char) );
-
- printf("\n chaεne n░ %d: ", n+ 1);
- LitChaine( t[n], dim);
- }
- while( strcmp( t[n], "fin") );
-
- TrierChaines( n, t); /* opΘration de tri */
-
- printf("\n\n Liste des chaεnes triΘes : \n");
- for( i= 0; i< n; i++)
- {
- printf("\n chaεne n░ %d: %s", i+ 1, t[i]);
- free( t[i]); /* libΘration de la mΘmoire allouΘe */
- }
- }
-
- void TrierChaines( int n0, char *t0[])
- {
- int i, j;
- char *t1;
-
- for( i= 0; i< n0- 1; ++i)
- for( j= i+ 1; j< n0; ++j)
- if( strlen( t0[i])> strlen(t0[j]) )
- {
- t1= t0[i];
- t0[i]= t0[j];
- t0[j]= t1;
- }
- }
-
- void LitChaine( char *chaine0, int dim_chaine0)
- {
- char *chaine1= ( char*) malloc( 2* 256);
- *(chaine0+ dim_chaine0- 1)='\0';
- while( scanf("%255[^\n]", chaine1)!= 1)
- while( getchar() != '\n');
- while( getchar() != '\n');
- strncpy( chaine0, chaine1, dim_chaine0- 1);
- free( chaine1);
- }
-