Массив: Сортировка слов по алфавиту - C (СИ)
Формулировка задачи:
Всем добрый день!
Помогите разобраться с задачей :
Пользователь вводит слова, которые помещаются в массив символов одно за другим в порядке ввода, в конце каждого слова помещается нулевой символ ( '\0') .
Указатели на слова помещаются в массив указателей.
Составить программу, которая, используя массив указателей, проводит сортировку слов по алфавиту (при этом массив символов остается неизменным). Вывести
отсортированный список слов на экран.
Как отсортировать строки я знаю,проблема как организовать указатели на слова,пыталась по всякому,ничего не выходит.
Смогла реализовать только один случай ,НО там количество слов известно и слова вводятся как строки через enter,а как их вводить через пробел и запоминать в указатели,не знаю
Заранее спасибо за помощь.
#define N 6 int main(void) { char strings[N][30]; char *strP[N]; int i; for(i=0; i<N; i++) //чтение строк { gets(strings[i]); strP[i] = &strings[i][0]; //i-строки 0-столбец,указатель на первую букву слова }
Решение задачи: «Массив: Сортировка слов по алфавиту»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <stdlib.h> int cmp(const void * a, const void * b) { return strcmp(*(char**)a, *(char**)b); } #define WORDS_COUNT (6) #define WORD_LENGTH (30) int main(void) { char words[WORDS_COUNT][WORD_LENGTH] = { "Petrov", "Sidorov", "Alibaba", "Ivanov", "Zulukbek", "Yiholainen" }; char * pointers[WORDS_COUNT]; int i; for ( i = 0; i < WORDS_COUNT; ++i ) pointers[i] = words[i]; qsort(pointers, WORDS_COUNT, sizeof(char*), cmp); printf("Words array:\n"); for ( i = 0; i < WORDS_COUNT; ++i ) printf("%s ", words[i]); printf("\nPointers array:\n"); for ( i = 0; i < WORDS_COUNT; ++i ) printf("%s ", pointers[i]); printf("\n"); return 0; }
Объяснение кода листинга программы
- Подключаются необходимые библиотеки для работы со строками и сортировкой массивов
- Определяется функция сравнения, которая будет использоваться для сортировки массива
- Задаются константы, определяющие количество слов в массиве (WORDS_COUNT) и максимальную длину слова (WORD_LENGTH)
- Создается массив слов и заполняется некоторыми значениями
- Создается массив указателей на слова, который будет использоваться для сортировки
- В цикле все элементы массива words копируются в массив pointers
- Используя функцию qsort, массив pointers сортируется в порядке возрастания с помощью функции сравнения cmp
- Выводится отсортированный массив words и массив pointers
- Программа завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д