sábado, 28 de maio de 2016

Qsort - ordenando uma matriz de inteiros

A função qsort(); é mesmo fantástica, nós já nos sentimos muito satisfeito em
saber usá-la em nossos programas para ordenação em qualquer tipo aceito do C,
imagine os responsáveis pela criação desta incrível função o quanto não se
alegraram ao vê-la funcionando assim plenamente.
No primeiro post sobre qsort(); cujo o nome foi:   
Qsort - ordenando um vetor de struct
Escrevi um pouco sobre esta importante função do C.
Neste exemplo eu mostro como ordenar uma matriz de inteiros previamente declarada,
aliás, eu recomendo que o futuro programador em linguagem C, guarde este exemplo
porque não é nada fácil encontrar outro como este.
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 Qsort_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 Qsort_Ord ( const void *a, const void *b ) {
     return ( strcmp ( ( char * ) a, ( char * ) b ) );
}
int main ( void ) {
     int Inteiros [ 10 ] [ 3 ] =
             {{4, 14, 24 },
              { 9, 19, 29 },
              { 6, 16, 26 },
              { 2, 12, 22 },
              { 5, 15, 25 },
              { 3, 13, 23 },
              { 8, 18, 28 },
              { 1, 11, 21 },
              { 7, 17, 27 },
              { 0, 10, 20 }
     };
     int i, j;
     system ( "title QSORT - ORDENANDO UMA MATRIZ DE INTEIROS" );
     Moldura ( 2, 24, 2, 78, 2, 3 );
     textcolor ( LIGHTRED );
     gotoxy ( 23, 3 );
     printf ( "QSORT - ORDENANDO UMA MATRIZ DE INTEIROS" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 15, 5 );
     printf ( "Antes da ordenação" );
     for ( i = 0; i < 10; i++ ) {
         gotoxy ( 21, i + 7 );
         textcolor ( BLACK );
         for ( j = 0; j < 3; j++ )
              printf ( "%d ", Inteiros [ i ] [ j ] );
     }
     getche ( );
     textcolor ( LIGHTBLUE );
     gotoxy ( 48, 5 );
     printf ( "Depois da ordenação" );
     qsort ( ( void * ) Inteiros, 10, sizeof ( Inteiros [ 0 ] ), Qsort_Ord );
     for ( i = 0; i < 10; i++ ) {
         gotoxy ( 54, i + 7 );
         textcolor ( BLACK );
         for ( j = 0; j < 3; j++ ) {
              printf ( "%d ", Inteiros [ i ] [ j ] );
         }
     }
     Sleep ( 1800 );
     textbackground ( WHITE );
     textcolor ( LIGHTBLUE );
     gotoxy ( 21, 19 );
     printf ( "Por: " );
     textcolor ( LIGHTMAGENTA );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 21, 20 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 36, 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     return 0;
}

Nenhum comentário:

Postar um comentário

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