Сортировка массива структур по полю в алфавитном порядке - 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);
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
и - У нас есть структура данных lab, которая содержит поле str_1 типа char и другие поля, которые не участвуют в сортировке
- Мы определяем функцию сравнения cmp, которая принимает два указателя на структуру lab и сравнивает поля str_1 этих структур
- В функции используется функция strcmp для сравнения строк
- Мы используем функцию qsort для сортировки массива структур lab по полю str_1. В качестве аргументов функции qsort передаются:
- st - указатель на первый элемент массива структур lab
- N - количество элементов массива структур lab
- sizeof(struct lab) - размер одной структуры lab в памяти
- cmp - функция сравнения, которую мы определили ранее
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д