Отсортировать записи в массиве по алфавиту - C (СИ)
Формулировка задачи:
Нужно отсортировать записи в массиве по алфавиту. Записать в виде функции.
void sort(WORKER* mas, int);//Функция для сортировки массива по алфавиту
Решение задачи: «Отсортировать записи в массиве по алфавиту»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef char name_t[32]; typedef double money_t; typedef struct WORKER { name_t name; money_t salary; } worker_t; void dump(const worker_t * workers, size_t count) { while ( count-- ) { printf("%s\t$%.02f\n", workers->name, workers->salary); ++workers; } } int name_cmp(const void * a, const void * b) { return strcmp(((worker_t*)a)->name, ((worker_t*)b)->name); } #define elements_count(arr) ( sizeof(arr) / sizeof(*(arr)) ) int main(void) { worker_t workers[] = { { "Petrov", 1200.0 }, { "Sidorov", 1000.0 }, { "Ivanov", 900.0 } }; qsort(workers, elements_count(workers), sizeof(worker_t), name_cmp); dump(workers, elements_count(workers)); return 0; }
Объяснение кода листинга программы
В данном коде происходит сортировка массива структур типа WORKER
по алфавиту на языке C.
Код объявляет три типа данных:
- name_t - массив символов для хранения имени работника (до 32 символов).
- money_t - тип данных для хранения зарплаты работника (число с плавающей точкой).
- worker_t - структура, объединяющая в себе два поля: имя работника (name_t) и его зарплата (money_t). Далее определены две функции:
- dump - выводит на экран информацию о работниках в заданном массиве в формате
Имя\tЗарплата\n
. - name_cmp - функция сравнения, используемая для сортировки массива. Сравнивает поля
name
структур worker_t. В функции main создается массив структур worker_t с тремя элементами. Затем, с помощью функции qsort, этот массив сортируется по алфавиту (с использованием функции name_cmp) и выводится на экран с помощью функции dump. Код работает корректно при условии, что все указанные типы данных и функции были правильно определены и работают правильно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д