Массив: Сортировка слов по алфавиту - 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;
}

Объяснение кода листинга программы

  1. Подключаются необходимые библиотеки для работы со строками и сортировкой массивов
  2. Определяется функция сравнения, которая будет использоваться для сортировки массива
  3. Задаются константы, определяющие количество слов в массиве (WORDS_COUNT) и максимальную длину слова (WORD_LENGTH)
  4. Создается массив слов и заполняется некоторыми значениями
  5. Создается массив указателей на слова, который будет использоваться для сортировки
  6. В цикле все элементы массива words копируются в массив pointers
  7. Используя функцию qsort, массив pointers сортируется в порядке возрастания с помощью функции сравнения cmp
  8. Выводится отсортированный массив words и массив pointers
  9. Программа завершается

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы