Сортировка массива структур по полю в алфавитном порядке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго время суток,уважаемые. Прошу помощи в написании кода) Имеется массив структур:
struct lab
{
char str_1[M];// Фамилия
char str_2[M];// Отдел
int c;// Зарплата
int d;// Кол-во детей
} st[N];
Нужно отсортировать структуры по полю "фамилия",которое является строкой, в алфавитном порядке. Желательно без функций сортировки, как-нибудь элементарно. Полностью программу писать не нужно,она уже написана, нужна лишь часть - сортировка. Всем откликнувшимся огромное спасибо.

Решение задачи: «Сортировка массива структур по полю в алфавитном порядке»

textual
Листинг программы
#include <stdlib.h>
#include <string.h>
/* после объявления массива структур */
int cmp(const void * a, const void * b) {
    return strcmp(((struct lab*)a)->str_1, ((struct lab*)b)->str_1);
}
 
/* где-то в программе */
qsort(st, N, sizeof(struct lab), cmp);

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы и
  2. У нас есть структура данных lab, которая содержит поле str_1 типа char и другие поля, которые не участвуют в сортировке
  3. Мы определяем функцию сравнения cmp, которая принимает два указателя на структуру lab и сравнивает поля str_1 этих структур
  4. В функции используется функция strcmp для сравнения строк
  5. Мы используем функцию qsort для сортировки массива структур lab по полю str_1. В качестве аргументов функции qsort передаются:
    • st - указатель на первый элемент массива структур lab
    • N - количество элементов массива структур lab
    • sizeof(struct lab) - размер одной структуры lab в памяти
    • cmp - функция сравнения, которую мы определили ранее

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы