Отсортировать структуру по одному из полей - C (СИ) (73329)
Формулировка задачи:
Имеется следующая информация о каждом из n студентов: ФИО,пол,возраст,курс. Написать программу, которая вводит эту информацию и вывести информацию,отсортированную по полям: курс,ФИО.
Что нужно добавить, чтобы выводилась информация, отсортированная по полям?
Листинг программы
- #include <stdio.h>
- struct student
- {char surname[20];
- char name[10];
- char fathername[10];
- char pol[1];
- int vozrast;
- int course;};
- int main()
- {struct student A[5];//массив студентов
- int i;
- printf("Введите информацию о студентах\n");
- printf("Фамилия имя отчество пол возраст курс\n");
- for (i=0;i<5;i++)
- {scanf(%s%s%s%s%d%d",&A[i].surname,&A[i].name,&A[i].fathername,&A[i].pol,&A[i].vozrast,&A[i].course);
Решение задачи: «Отсортировать структуру по одному из полей»
textual
Листинг программы
- for(int i = 0; i < sizeof(A); i ++)
- {
- for(int c = 0; c < sizeof(A); c++)
- {
- if(A[i].course < A[ c ].course)
- {
- student st = A[i];
- A[i] = A[ c ];
- A[ c ] = st;
- }
- }
- }
Объяснение кода листинга программы
- Переменная A объявлена как массив структур.
- Два вложенных цикла for используются для сравнения и перестановки элементов массива структур.
- Внешний цикл for итерируется по каждому элементу массива A.
- Внутренний цикл for итерируется по каждому элементу массива A, начиная с текущего индекса, который больше текущего индекса внешнего цикла.
- Если поле course текущего элемента меньше, чем поле course внутреннего элемента, то выполняется следующая последовательность действий:
- Создается объект типа student со значением текущего элемента массива A.
- Значение текущего элемента массива A заменяется значением внутреннего элемента массива A.
- Значение внутреннего элемента массива A заменяется значением созданного объекта типа student.
- По завершении внутренних циклов, отсортированный массив структур сохраняется в переменной A.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д