Выбрать соревнование | Задачи | Послать решение | Результаты проверки | Статистика по задачам | Вопросы и ответы | Результаты соревнования | Состояние сервера | Изменить данные | Управление командой | Помощь |
01/09/2007 | Основы программирования. Указатели (C) |
Ограничения: время – 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 в случае равенства строк, отрицательное число, если первая строка меньше второй, иначе положительное число (т.е. соответствует требованиям qsort на функцию сравнения).
Напишите оператор вызова функции для сортировки массива строк:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{ char list[1000][100];
int n;
scanf("%d",&n);
getchar();
for(int i=0;i<n;++i) {
list[i][0]=0;
scanf("%99[^\n]",list[i]);
getchar();
}
... // вызов qsort
for(int i=0;i<n;++i)
printf("%s\n",list[i]);
}
В качестве решения необходимо отправить только оператор с вызовом функции qsort.