domingo, 29 de maio de 2016

Qsort - ordenando um vetor de inteiros

Para finalizar esta série de exemplos de ordenação com qsort(); apresento este
ótimo programa que mostra primeiramente um vetor de 100 elementos inteiros todo
desordenado e do lado direito depois que clicamos em qualquer tecla, a função
qsort (); faz a ordenação completa e perfeita de todos elementos.
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.
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 <string.h>
#include <stdlib.h>
#include <conio.h>
/*
Tamanho do buffer da tela

Largura: 100
Altura:   25

Tamanho da janela

Largura: 100
Altura:   25
 */
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 ( ) {
    int Inteiros [ 100 ] = {
            36, 48, 34, 89,  25, 56,  1, 59, 12, 81 ,
            15, 22, 65, 17,  91,  6, 11, 93, 26, 54 ,
            85,  8, 35, 24,  39, 27, 76, 14, 21, 99 ,
            66, 95, 87, 69, 100, 51, 20, 18, 71, 46 ,
            33, 45, 57, 67,  80, 50,  4, 82, 83, 92 ,
            31, 13, 94, 16,  47, 10, 61, 63, 74, 60 ,
             5, 88, 37, 77,  23, 38, 86, 43, 72, 78 ,
            70, 98, 73, 52,  42, 28, 68,  3, 41, 75 ,
            58, 79, 84, 97,  64, 55,  9, 19,  7, 32 ,
            44, 62, 90, 53,  40, 30, 96, 29,  2, 49 };
    int i;
    system ( "title QSORT - ORDENANDO UM VETOR DE INTEIROS" );
    Moldura ( 2, 24, 2, 98, 2, 3 );
    textcolor ( LIGHTRED );
    gotoxy ( 33, 3 );
    printf ( "QSORT - ORDENANDO UM VETOR DE INTEIROS" );
    textcolor ( LIGHTBLUE );
    gotoxy ( 20, 5 );
    printf ( "Antes da ordenação" );
    textcolor ( BLACK );gotoxy(7,7);
    for ( i = 0; i < 100; i++ ) {
        if ( i == 10 ){ gotoxy(7,8);}
        if ( i == 20 ) {gotoxy(7,9);}
        if ( i == 30 ){gotoxy(7,10);}
        if ( i == 40 ){gotoxy(7,11);}
        if ( i == 50 ){gotoxy(7,12);}
        if ( i == 60 ){gotoxy(7,13);}
        if ( i == 70 ){gotoxy(7,14);}
        if ( i == 80 ){gotoxy(7,15);}
        if ( i == 90 ){gotoxy(7,16);}
        printf ( "%4d", Inteiros [ i ] );
    }
    getche ( );
    textcolor ( LIGHTBLUE );
    gotoxy ( 64, 5 );
    printf ( "Depois da ordenação" );
    qsort ( ( void * ) Inteiros, 100, sizeof ( Inteiros [ 0 ] ), Qsort_Ord );
    textcolor ( BLACK );gotoxy(52,7);
    for ( i = 0; i < 100; i++ ) {
        if ( i == 10 ){ gotoxy(52,8);}
        if ( i == 20 ) {gotoxy(52,9);}
        if ( i == 30 ){gotoxy(52,10);}
        if ( i == 40 ){gotoxy(52,11);}
        if ( i == 50 ){gotoxy(52,12);}
        if ( i == 60 ){gotoxy(52,13);}
        if ( i == 70 ){gotoxy(52,14);}
        if ( i == 80 ){gotoxy(52,15);}
        if ( i == 90 ){gotoxy(52,16);}
        printf ( "%4d", Inteiros [ i ] );
    }
    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 ( 46, 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.