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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX_WORD_LEN 10
  4. #define MAX_WORD_COUNT 10
  5.  
  6. int main()
  7. {
  8. char stroka[200],str[MAX_WORD_COUNT][MAX_WORD_LEN],word[MAX_WORD_LEN];
  9. char *tmp;
  10. int i=0,j=0,k;
  11.  
  12.  
  13. printf("Enter string: ");
  14. gets(stroka);
  15. tmp=strtok(stroka,",");
  16. while(tmp!=NULL)
  17. {
  18.  strncpy(str[i], tmp, MAX_WORD_LEN); //запись каждой фамилии в массив
  19.  tmp=strtok(NULL,",");
  20.  i++;
  21. }
  22. //сортировка
  23. for (j=0;j<i;j++)
  24.     {
  25.         for (k=0;k<i;k++)
  26.         {
  27.             if(strlen(str[k])<strlen(str[k+1]))
  28.             {
  29.                 strcpy(word,str[k]);
  30.                 strcpy(str[k],str[k+1]);
  31.                 strcpy(str[k+1],word);
  32.             }
  33.         }
  34.     }
  35. //вывод
  36. for(j=0;j<i;j++)
  37.    printf("%s\n",str[j]);
  38.  
  39.     return 0;
  40. }

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

В этом коде:

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы