Список фамилий вводится через запятую в виде строки. Упорядочить фамилии по алфавиту - 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; }
Объяснение кода листинга программы
В этом коде:
- Создаются массивы для хранения фамилий и строка для ввода.
- Вводится строка с фамилиями через запятую.
- Фамилии разделяются на отдельные слова и сохраняются в массиве.
- Производится сортировка массива с фамилиями по алфавиту.
- Выводится отсортированный список фамилий. Пояснение к коду:
- В первой строке подключаются необходимые библиотеки.
- Определяются константы для ограничения длины фамилии и количества фамилий.
- В функции main() создаются переменные для хранения строки ввода, массива фамилий и указатель на текущую фамилию.
- С помощью функции printf() выводится приглашение для ввода строки.
- Введенная строка сохраняется в переменной stroka с помощью функции gets().
- Функция strtok() используется для разделения строки на отдельные слова и сохранения их в массиве str.
- В цикле while() происходит добавление каждой фамилии в массив.
- Далее происходит сортировка массива с помощью двух вложенных циклов for().
- Если текущая фамилия меньше следующей, то они меняются местами с помощью функций strcpy().
- После сортировки происходит вывод отсортированного списка фамилий с помощью цикла for() и функции printf().
- В конце функции main() возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д