Ir para conteúdo
Fórum Script Brasil
  • 0

QSORT - ORDENANDO UMA MATRIZ DE STRING


roccoC/C++

Pergunta

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:

qsort II.PNG

Veja abaixo o link do código do programa:

http://codigosfontes-ccplus-plus.blogspot.com.br/2016/05/qsort-ordenando-uma-matriz-de-string.html

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

  • 0

Olá. Agradecemos pela iniciativa.

O código como o Sr. postou não está completo. Devido a isso, para quem tem interesse em aprender algo com respeito a essa área do C, segue o código completo:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include <locale.h>

// declaração das funções
void textcolor(int color);
void textbackground(int color);
void gotoxy(int x, int y);
void Moldura ( int a , int c , int b , int d , int e , int f );
int comp(const void *a, const void *b);

typedef enum {BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY,
LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE} COLORS;

static int __BACKGROUND = BLACK;
static int __FOREGROUND = LIGHTGRAY;

void textcolor(int color) {
    __FOREGROUND = color;
    SetConsoleTextAttribute( GetStdHandle (STD_OUTPUT_HANDLE),
    color + (__BACKGROUND << 4));
}

void textbackground(int color) {
    __BACKGROUND = color;
    SetConsoleTextAttribute ( GetStdHandle (STD_OUTPUT_HANDLE),
    __FOREGROUND + (color << 4));
}

void gotoxy(int x, int y) {
    COORD c = {x, y};
    SetConsoleCursorPosition (GetStdHandle (STD_OUTPUT_HANDLE), c);
}

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(const void *a, const void *b) {
    return (strcmp((char *) a, (char *) b));
}

int main() {

    setlocale(LC_ALL, "Portuguese");

    char Nomes [ 10 ] [ 40 ] =
            {{"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 );
     for ( i = 0; i < 10 ; i++ ) {
         textcolor ( BLACK );
         gotoxy ( 50 , i + 7 );
         printf ( "%s" , Nomes [ i ] );
     }
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     textcolor ( LIGHTBLUE );
     gotoxy ( 17 , 19 );
     printf ( "Por: " );
     textcolor ( LIGHTMAGENTA );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 17 , 20 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     gotoxy ( 36 , 23 );
     printf ( "MUITO OBRIGADO" );
     Sleep ( 1800 );
     getche ( );

     textcolor ( LIGHTGRAY );
     textbackground( BLACK );

     system("cls");

     exit ( 0 );

     return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...