Список фамилий вводится через запятую в виде строки. Упорядочить фамилии по алфавиту - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Хотел еще попросить помочь написать вот эту программу: Список фамилий вводится через запятую в виде строки. Упорядочить фамилии по алфавиту. Суть проблемы состоит в том, что моя программа не может сортировать по нормальному и выводит кучу мусора. Спасибо.

Решение задачи: «Список фамилий вводится через запятую в виде строки. Упорядочить фамилии по алфавиту»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define MAX_WORD_LEN 10
#define MAX_WORD_COUNT 10
 
int main()
{
char stroka[200],str[MAX_WORD_COUNT][MAX_WORD_LEN],word[MAX_WORD_LEN];
char *tmp;
int i=0,j=0,k;
 
 
printf("Enter string: ");
gets(stroka);
tmp=strtok(stroka,",");
while(tmp!=NULL)
{
 strncpy(str[i], tmp, MAX_WORD_LEN); //запись каждой фамилии в массив
 tmp=strtok(NULL,",");
 i++;
}
//сортировка
for (j=0;j<i;j++)
    {
        for (k=0;k<i;k++)
        {
            if(strlen(str[k])<strlen(str[k+1]))
            {
                strcpy(word,str[k]);
                strcpy(str[k],str[k+1]);
                strcpy(str[k+1],word);
            }
        }
    }
//вывод
for(j=0;j<i;j++)
   printf("%s\n",str[j]);
 
    return 0;
}

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

В этом коде:

  1. Создаются массивы для хранения фамилий и строка для ввода.
  2. Вводится строка с фамилиями через запятую.
  3. Фамилии разделяются на отдельные слова и сохраняются в массиве.
  4. Производится сортировка массива с фамилиями по алфавиту.
  5. Выводится отсортированный список фамилий. Пояснение к коду:
  6. В первой строке подключаются необходимые библиотеки.
  7. Определяются константы для ограничения длины фамилии и количества фамилий.
  8. В функции main() создаются переменные для хранения строки ввода, массива фамилий и указатель на текущую фамилию.
  9. С помощью функции printf() выводится приглашение для ввода строки.
  10. Введенная строка сохраняется в переменной stroka с помощью функции gets().
  11. Функция strtok() используется для разделения строки на отдельные слова и сохранения их в массиве str.
  12. В цикле while() происходит добавление каждой фамилии в массив.
  13. Далее происходит сортировка массива с помощью двух вложенных циклов for().
  14. Если текущая фамилия меньше следующей, то они меняются местами с помощью функций strcpy().
  15. После сортировки происходит вывод отсортированного списка фамилий с помощью цикла for() и функции printf().
  16. В конце функции main() возвращается 0, что означает успешное выполнение программы.

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


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

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

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