Сортировка по группам
Ограничения: время – 250ms/500ms, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Функция быстрой сортировки имеет прототип
```c
void qsort( void *ptr, size_t count, size_t size,
int (*comp)(const void *, const void *) );
```
Первый аргумент функции - адрес массива, далее количество элементов массиве и размер одного элемента.
Последним аргументом является указатель на функцию, которой передаются адреса двух элементов массива для сравнения.
Функция сравнения должна вернуть 0 в случае равенства элементов, отрицательное число, если первый элемент меньше второго, иначе положительное число.
Функция для сравнения строк имеет следующий прототип
```c
int strcmp( const char *lhs, const char *rhs);
```
Функция сравнения должна вернуть 0 в случае равенства элементов, отрицательное число, если первый элемент меньше второго, иначе положительное число.
Напишите функцию сравнения для сортировки массива структур, содержащих следующую информацию о студентах:
```c
typedef struct student {
char name[50]; // фамилия
int group; // номер группы
} student;
```
Сортировка должна выполняться сначала по номеру группы, а при совпадении группы -- по фамилии с помощью strcmp.
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct student {
char name[50]; // фамилия
int group; // номер группы
} student;
int studcmp(const void *st1, const void *st2){
...
}
int main()
{ student list[1000];
int n;
scanf("%d",&n);
for(int i=0;i<n;++i) {
scanf("%49s %d",list[i].name,list[i].group);
}
qsort(list,n,sizeof(student),studcmp);
for(int i=0;i<n;++i)
printf("%d %s\n",list[i].group,list[i].name);
}
```
В качестве решения необходимо отправить только операторы, которые нужно подставить в определение функции studcmp.