Отсортировать массив структур простыми вставками - C (СИ)
Формулировка задачи:
Нужно отсортировать массив структур простыми вставками...Ключ сортировки Population, ничего не получается помогите кто-нибудь
#include <stdio.h> #include <string.h> #include <stdlib.h> struct Struct { char Audition[10]; char Population[10]; } ; Struct* insertSort(Struct* a, int size) ; void main() { int n, i, j; printf("Enter number of Auditions\n"); struct Struct sort[10]; for (i = 1; i < 4; ++i){ printf("Enter the Audition\n"); scanf("%s",sort[i].Audition); printf("Enter the Population\n"); scanf("%s",sort[i].Population); } insertSort(sort, 10); for (i = 1; i < 4; ++i){ printf("%s",sort[i]); } } Struct* insertSort(Struct* a, int size) { int i, j; char* tmp; for (i = 1; i < 4; ++i) // цикл проходов, i - номер прохода { tmp = a[i].Audition; for (j = i - 1; j >= 0 && a[j].Audition > tmp; --j) // поиск места элемента в готовой последовательности a[j + 1] = a[j]; // сдвигаем элемент направо, пока не дошли a[j + 1] = tmp; return(a); } }
Решение задачи: «Отсортировать массив структур простыми вставками»
textual
Листинг программы
#include <stdio.h> #include <string.h> typedef struct { char Audition[10]; char Population[10]; } Struct; #define N 4 Struct* insertSort(Struct* a, int size); int main() { int i; Struct array[N]; printf("Enter number of Auditions\n"); for (i = 0; i < N; ++i) { printf("%d. audition: ", i + 1); scanf("%s", array[i].Audition); printf("%d. population: ", i + 1); scanf("%s", array[i].Population); } insertSort(array, N); for (i = 0; i < N; ++i) { printf("%s %s\n", array[i].Audition, array[i].Population); } return 0; } Struct* insertSort(Struct* a, int size) { int i, j; Struct tmp; for (i = 1; i < size; ++i) { for (j = i; (j > 0) && (strcmp(a[j].Population, a[j-1].Population) < 0); --j) { tmp = a[j]; a[j] = a[j-1]; a[j-1] = tmp; } } return a; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
и - Определяем структуру Struct, которая содержит два поля типа char - Audition и Population, каждое из которых имеет размер 10 символов
- Определяем константу N, которая задает размер массива структур Struct в main()
- Объявляем функцию insertSort(), которая принимает указатель на массив структур Struct и его размер
- В main() создаем массив структур Struct типа N и инициализируем его пустыми строками
- Запрашиваем у пользователя ввод количества прослушиваний и заполняем поля Audition и Population для каждой прослушивания
- Вызываем функцию insertSort(), передавая ей указатель на массив структур Struct и его размер
- Выводим отсортированный массив структур Struct на экран
- В функции insertSort() используем алгоритм сортировки вставками. Проходим по массиву от 1 до size-1 и для каждого элемента сравниваем его значение Population с Population предыдущего элемента. Если текущий элемент меньше предыдущего, меняем их местами с помощью временной переменной tmp. Повторяем до тех пор, пока массив не будет полностью отсортирован
- Возвращаем отсортированный массив структур Struct в main()
- Возвращаем 0 из функции main(), что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д