Выбрать соревнование | Задачи | Послать решение | Результаты проверки | Статистика по задачам | Вопросы и ответы | Результаты соревнования | Состояние сервера | Изменить данные | Управление командой | Помощь |
01/09/2007 | Основы программирования. Указатели (F) |
Ограничения: время – 250ms/500ms, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Функция быстрой сортировки имеет прототип
void qsort( void *ptr, size_t count, size_t size,
int (*comp)(const void *, const void *) );
Первый аргумент функции - адрес массива, далее количество элементов массиве и размер одного элемента. Последним аргументом является указатель на функцию, которой передаются адреса двух элементов массива для сравнения. Функция сравнения должна вернуть 0 в случае равенства элементов, отрицательное число, если первый элемент меньше второго, иначе положительное число.
Функция для сравнения строк имеет следующий прототип
int strcmp( const char *lhs, const char *rhs);
Функция сравнения должна вернуть 0 в случае равенства элементов, отрицательное число, если первый элемент меньше второго, иначе положительное число.
Напишите функцию сравнения для сортировки массива структур, содержащих следующую информацию о студентах:
typedef struct student {
char name[50]; // фамилия
int group; // номер группы
} student;
Сортировка должна выполняться сначала по номеру группы, а при совпадении группы – по фамилии с помощью strcmp.
#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.