Ordenando Cursos com Bubble Sort

CBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como organizar uma lista de cursos de programação usando o algoritmo de ordenação bubble sort. Os cursos serão ordenados em ordem lexicográfica, permitindo que você visualize e resuma facilmente as linguagens de programação que aprendeu.

👀 Visualização

$ gcc courses.c -o courses
$ ./courses
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como calcular corretamente o comprimento de um array
  • Como modificar o tipo de parâmetro de uma função de ordenação
  • Como corrigir a lógica de comparação e troca no algoritmo de ordenação

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Organizar uma lista de cursos de programação usando o algoritmo bubble sort
  • Compreender a importância do cálculo adequado do comprimento do array e dos tipos de parâmetros da função
  • Aplicar a lógica correta de comparação e troca em um algoritmo de ordenação
  • Demonstrar sua capacidade de seguir instruções passo a passo e modificar o código existente para alcançar o resultado desejado

Corrigir o Cálculo do Tamanho do Array

Nesta etapa, você aprenderá como calcular corretamente o comprimento do array courses.

  1. Abra o arquivo courses.c localizado no diretório /home/labex/project/.

  2. Encontre a seguinte linha de código:

    int n = strlen(courses);

    Esta linha usa a função strlen para calcular o comprimento do array courses, o que está incorreto. A função strlen é usada para calcular o comprimento de uma string, não de um array.

  3. Substitua a linha acima pelo seguinte código:

    int n = sizeof(courses) / sizeof(courses[0]);

    Esta linha usa o operador sizeof para calcular o tamanho total do array courses e, em seguida, o divide pelo tamanho de um único elemento para obter o número de elementos no array.

✨ Verificar Solução e Praticar

Alterar o Tipo de Parâmetro da Função de Ordenação

Nesta etapa, você aprenderá como alterar o tipo de parâmetro da função sort.

  1. No arquivo courses.c, encontre a definição da função sort:

    void sort(char p[], int n)
  2. Altere o tipo de parâmetro de char p[] para char *p[]. A definição da função atualizada deve ser semelhante a esta:

    void sort(char *p[], int n)

    Esta alteração é necessária porque estamos lidando com um array de strings (um array de ponteiros), e não com uma única string.

✨ Verificar Solução e Praticar

Corrigir a Lógica de Comparação e Troca

Nesta etapa, você aprenderá como corrigir a lógica de comparação e troca na função sort.

  1. Na função sort, encontre o seguinte código:

    if (k != j)
    {
        tmp = p[k];
        p[k] = p[i];
        p[i] = tmp;
    }
  2. Substitua a condição if (k != j) por if (k != i). O código atualizado deve ser semelhante a este:

    if (k != i)
    {
        tmp = p[k];
        p[k] = p[i];
        p[i] = tmp;
    }

    Esta alteração é necessária para verificar se o menor elemento foi encontrado na iteração atual (indexada por i).

Após concluir estas três etapas, seu arquivo courses.c deverá estar pronto para compilação e execução. Você pode agora prosseguir para a próxima etapa.

  1. Na função sort, complete a seção // TODO: da seguinte forma:

    {
         if (strcmp(p[j], p[k]) < 0)
         {
             k = j;
         }
    }
  2. Execute o seguinte comando:

gcc courses.c -o courses
./courses
  1. Verifique se o programa produz a saída esperada.
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP
✨ Verificar Solução e Praticar

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.