Сортировка курсов методом пузырьковой сортировки

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь организовывать список курсов по программированию с использованием алгоритма сортировки методом пузырька. Курсы будут отсортированы в лексикографическом порядке, что позволит вам легко увидеть и обобщить языки программирования, которые вы изучали.

👀 Предварительный просмотр

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

🎯 Задачи

В этом проекте вы научитесь:

  • Как правильно вычислять длину массива
  • Как изменить тип параметра функции сортировки
  • Как исправить логику сравнения и обмена в алгоритме сортировки

🏆 Достижения

После завершения этого проекта вы сможете:

  • Организовать список курсов по программированию с использованием алгоритма сортировки методом пузырька
  • Разобраться в важности правильного вычисления длины массива и типов параметров функций
  • Применить правильную логику сравнения и обмена в алгоритме сортировки
  • Показать свою способность следовать пошаговым инструкциям и изменять существующий код, чтобы достичь желаемого результата

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c/BasicsGroup -.-> c/operators("Operators") c/ControlFlowGroup -.-> c/if_else("If...Else") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/CompoundTypesGroup -.-> c/strings("Strings") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") subgraph Lab Skills c/operators -.-> lab-301503{{"Сортировка курсов методом пузырьковой сортировки"}} c/if_else -.-> lab-301503{{"Сортировка курсов методом пузырьковой сортировки"}} c/arrays -.-> lab-301503{{"Сортировка курсов методом пузырьковой сортировки"}} c/strings -.-> lab-301503{{"Сортировка курсов методом пузырьковой сортировки"}} c/pointers -.-> lab-301503{{"Сортировка курсов методом пузырьковой сортировки"}} c/function_parameters -.-> lab-301503{{"Сортировка курсов методом пузырьковой сортировки"}} end

Исправьте вычисление длины массива

В этом шаге вы научитесь правильно вычислять длину массива courses.

  1. Откройте файл courses.c, расположенный в директории /home/labex/project/.

  2. Найдите следующую строку кода:

    int n = strlen(courses);

    Эта строка использует функцию strlen для вычисления длины массива courses, что неправильно. Функция strlen используется для вычисления длины строки, а не массива.

  3. Замените вышеуказанную строку на следующую:

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

    Эта строка использует оператор sizeof для вычисления общего размера массива courses, а затем делит его на размер одного элемента, чтобы получить количество элементов в массиве.

Измените тип параметра функции сортировки

В этом шаге вы научитесь изменять тип параметра функции sort.

  1. В файле courses.c найдите определение функции sort:

    void sort(char p[], int n)
  2. Измените тип параметра с char p[] на char *p[]. Обновленное определение функции должно выглядеть так:

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

    Это изменение необходимо, потому что мы работаем с массивом строк (массивом указателей), а не с одной строкой.

Исправьте логику сравнения и обмена

В этом шаге вы научитесь исправлять логику сравнения и обмена в функции sort.

  1. В функции sort найдите следующий код:

    if (k!= j)
    {
        tmp = p[k];
        p[k] = p[i];
        p[i] = tmp;
    }
  2. Замените условие if (k!= j) на if (k!= i). Обновленный код должен выглядеть так:

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

    Это изменение необходимо, чтобы проверить, был ли найден наименьший элемент на текущей итерации (индексируемой i).

После завершения этих трех шагов ваш файл courses.c должен быть готов к компиляции и выполнению. Теперь вы можете перейти к следующему шагу.

  1. В функции sort завершите раздел // TODO: следующим образом:

    {
         if (strcmp(p[j], p[k]) < 0)
         {
             k = j;
         }
    }
  2. Выполните следующую команду:

gcc courses.c -o courses
./courses
  1. Проверьте, что программа выводит ожидаемый результат.
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP
✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.