Символы в словах исходной строки записать в алфавитном порядке - C (СИ)
Формулировка задачи:
Дана строка, содержащая слова, разделенные одним или несколькими разделительными символами (пробелами, табуляторами), в начале строки и в конце строки также могут находиться разделительные символы. Сформировать новую строку, в которой символы в словах исходной строки записаны в алфавитном порядке. Слова в новой строке разделяются одним пробелом. В начале строки и в конце строки не должно быть разделительных символов.
Решение задачи: «Символы в словах исходной строки записать в алфавитном порядке»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> //----------------------------------------------------------------------------- int getWord(const char str[], const char** begin, const char** end) { for (; *str && isspace(*str); ++str) { ; } *begin = str; for (; *str && !isspace(*str); ++str) { ; } *end = str; return *end - *begin; } //----------------------------------------------------------------------------- int cmp(const void* a, const void* b) { return tolower(*(char*)a) - tolower(*(char*)b); } //----------------------------------------------------------------------------- char* func(const char src[], char dst[]) { char* result = dst; const char* begin, * end; int len; while ((len = getWord(src, &begin, &end))) { strncpy(result, begin, len); qsort(result, len, sizeof(char), cmp); result += len; *result++ = ' '; src = end; } if (dst < result) { result--; } *result = 0; return dst; } //----------------------------------------------------------------------------- #define MAXLEN 128 int main() { char source[MAXLEN], result[MAXLEN]; if (fgets(source, MAXLEN, stdin)) { printf("[%s]\n", func(source, result)); } return 0; }
Объяснение кода листинга программы
- Предполагается, что пользователь вводит строку.
- Строка сохраняется в переменной типа char, затем копируется в другую строку типа char.
- В функции func происходит сортировка символов в каждом слове.
- Сортировка происходит с помощью функции qsort, которая сортирует символы в порядке возрастания без учета регистра.
- Функция cmp сравнивает символы, преобразуя их в нижний регистр с помощью функции tolower.
- В функции main вводится строка с помощью функции fgets, затем вызывается функция func для сортировки строки, и результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д