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

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

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

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

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

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <string.h>
  3. /* после объявления массива структур */
  4. int cmp(const void * a, const void * b) {
  5.     return strcmp(((struct lab*)a)->str_1, ((struct lab*)b)->str_1);
  6. }
  7.  
  8. /* где-то в программе */
  9. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы