24 de ago. de 2010

BubbleSort com Strings no C/C++

image

Esta aqui o algoritmo base para o exercício proposto no post sobre BubbleSort.

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

const int TAMANHO = 5;
const int TAMANHO_NOME = 50;

void BubbleSort(char vetor[TAMANHO][TAMANHO_NOME])
{
    for (int i = TAMANHO - 1; i > 0; i--)
    {
        for (int j = 0; j < i; j++)
        {
            if (strcmp(vetor[j], vetor[j + 1]) == 1)
            {
                char aArray[TAMANHO];   

                strcpy(aArray, vetor[j]);
                printf("\n\n%i", *aArray);
                getch();
                strcpy(vetor[j], vetor[j + 1]);
                strcpy(vetor[j + 1], aArray);
                free(aArray);
            }
        }
    }
}

void Listar(char vetor[TAMANHO][TAMANHO_NOME])
{
    for (int i = 0; i < TAMANHO; i++)
    {
        printf("%d - %s\n", i + 1, vetor[i]);
    }
}

void main()
{
    char vetor[TAMANHO][TAMANHO_NOME];

    strcpy(vetor[0], "RUDSON");
    strcpy(vetor[1], "GUSTAVO");
    strcpy(vetor[2], "ERIK");
    strcpy(vetor[3], "ALAN");
    strcpy(vetor[4], "ZIDANE");

    Listar(vetor);
    printf("__________________\n");
    BubbleSort(vetor);
    Listar(vetor);
    getch();

}

A base das strings é que na linguagem C elas são vetores de char, e vetores devem ser manipulados por funções, pois alguns operadores não se aplicam a eles.

Então a sacada aqui é utilizar as funções:

  • stcmp (string compare): compara strings, retornando -1 para o primeiro parâmetro menor do que o segundo, 0 para strings iguais, 1 para o primeiro parâmetro maior do que o segundo.
  • strcpy (string copy): copia o conteúdo do segundo parâmetro para o primeiro parâmetro.

Espero ser de ajuda para os outros algoritmos também. Brincadeira

E só para complementar e fixar:

  • Implemente o mesmo algoritmo com strings, porém ordenando de forma decrescente.

1 comentários:

Marcos disse...
Este comentário foi removido pelo autor.