Преобразовать все слова так, чтобы все гласные стояли в конце слова - 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
, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д