Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
roccoC/C++

QSORT - ORDENANDO UMA MATRIZ DE STRING

Question

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

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

  • 0
Guest

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 ( "[email protected]" );
     Sleep ( 1800 );
     gotoxy ( 36 , 23 );
     printf ( "MUITO OBRIGADO" );
     Sleep ( 1800 );
     getche ( );

     textcolor ( LIGHTGRAY );
     textbackground( BLACK );

     system("cls");

     exit ( 0 );

     return 0;
}

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148593
    • Total Posts
      644162
×
×
  • Create New...