sexta-feira, 27 de maio de 2016

Qsort - ordenando uma matriz de string

No post anterior os leitores observaram o quanto é fácil usar a função qsort();
para ordenar um vetor de estrutura, ode nele escrevi um pouco sobre esta importante
função do C.
Neste exemplo mostro como ordenar uma matriz de string, o que é ainda mais fácil
a única surpresa, más que não foge da lógica é o método escolhido para fazer as
comparações, que é usando a função strcmp (); da biblioteca string.h dentro da
função  int Comp_ord (); onde pares de elementos são comparados e retornados
para a função principal.

Veja abaixo uma imagem do programa em execução:


Veja abaixo o código do programa:



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void Moldura ( int a , int c , int b , int d , int e , int f ) {
     textbackground ( WHITE );
     for ( a = e; a <= c ; a++ )
         for ( b = f; b <= d ; b++ ) {
              gotoxy ( b , a );
              textbackground ( WHITE );
              printf ( " " );
         }
}
int Comp_ord ( const void *a , const void *b ) {
     return ( strcmp ( ( char * ) a , ( char * ) b ) );
}
int main ( void ) {
     char Nomes [ 10 ] [ 16 ] =
            {{"Jaqueline Vega "},
              {"Eder Costa     "},
              {"Humberto Gomes "},
              {"Dijalma Lacerda"},
              {"Caroline Silva "},
              {"Igor Goncalves "},
              {"Bruna Carla    "},
              {"Fabio Quadros  "},
              {"Ana Celia      "},
              {"Geany Barros   "}};
     int i;
     system ( "title QSORT - ORDENANDO UMA MATRIZ DE STRING" );
     Moldura ( 2 , 24 , 2 , 78 , 2 , 3 );
     textcolor ( LIGHTRED );
     gotoxy ( 23 , 3 );
     printf ( "QSORT - ORDENANDO UMA MATRIZ DE STRING" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 15 , 5 );
     printf ( "Antes da ordenação" );
     for ( i = 0; i < 10 ; i++ ) {
         textcolor ( BLACK );
         gotoxy ( 17 , i + 7 );
         printf ( "%s" , Nomes [ i ] );
     }
     getche ( );
     textcolor ( LIGHTBLUE );
     gotoxy ( 48 , 5 );
     printf ( "Depois da ordenação" );
     qsort ( ( void * ) Nomes , 10 , sizeof ( Nomes [ 0 ] ) , Comp_ord );
     for ( i = 0; i < 10 ; i++ ) {
         textcolor ( BLACK );
         gotoxy ( 50 , i + 7 );
         printf ( "%s" , Nomes [ i ] );
     }
     Sleep ( 1800 );
     textbackground ( WHITE );
     textcolor ( LIGHTBLUE );
     gotoxy ( 17 , 19 );
     printf ( "Por: " );
     textcolor ( LIGHTMAGENTA );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 17 , 20 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 36 , 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     exit ( 0 );
     return 0;
}


Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.