Преобразовать все слова так, чтобы все гласные стояли в конце слова - C (СИ)
Формулировка задачи:
Задан список слов, перечисленных через пробел. Преобразовать все слова
так, чтобы все гласные стояли в конце слова
Решение задачи: «Преобразовать все слова так, чтобы все гласные стояли в конце слова»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> char* str_part(char* s){ char* i, c, *j, *p, *t = s; const char vs[] = "AEIUOYaeiuoy"; while((s = strpbrk(s, vs)) != NULL){ for(j = s; *j && !isspace(*j); ++j) ; i = s; s = j--; while((j >= i) && (strchr(vs, *j) != NULL)) --j; while(i < j){ if(strchr(vs, *i) != NULL){ for(p = i; p < j; ++p){ c = *p; *p = *(p + 1); *(p + 1) = c; } --j; } else ++i; } } return t; } int main(void){ char s[] = "0xAEF12 ABCDEF INFORMATION aeoiqweryIOxxx"; puts(s); puts( str_part(s) ); return 0; }
Объяснение кода листинга программы
- В функции
str_part
первый шаг - это поиск первого гласного в строкеs
с помощью функцииstrpbrk
, которая ищет первое вхождение любого символа из массиваAEIUOYaeiuoy
. Если гласная найдена, то функция возвращает указатель на этот символ, иначе возвращаетNULL
. - Затем идет поиск последнего гласного в строке
s
, начиная с найденного гласного и до конца строки. Это делается с помощью циклаwhile
, который продолжается, пока не будет найден гласный или не будет достигнут конец строки. - В процессе поиска последнего гласного, символы между первым гласным и последним гласным перемещаются в конец строки. Это делается с помощью цикла
while
, который продолжается, пока не будет достигнут конец строки. - В конце функции возвращается исходная строка
s
. - В функции
main
создается тестовая строкаs
, содержащая некоторые символы и слова. - Строка
s
выводится на экран с помощью функцииputs
. - Затем вызывается функция
str_part
с аргументомs
, и результат выводится на экран с помощью функцииputs
. - В конце функции
main
возвращается0
, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д