Преобразовать все слова так, чтобы все гласные стояли в конце слова - 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;
}

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

  1. В функции str_part первый шаг - это поиск первого гласного в строке s с помощью функции strpbrk, которая ищет первое вхождение любого символа из массива AEIUOYaeiuoy. Если гласная найдена, то функция возвращает указатель на этот символ, иначе возвращает NULL.
  2. Затем идет поиск последнего гласного в строке s, начиная с найденного гласного и до конца строки. Это делается с помощью цикла while, который продолжается, пока не будет найден гласный или не будет достигнут конец строки.
  3. В процессе поиска последнего гласного, символы между первым гласным и последним гласным перемещаются в конец строки. Это делается с помощью цикла while, который продолжается, пока не будет достигнут конец строки.
  4. В конце функции возвращается исходная строка s.
  5. В функции main создается тестовая строка s, содержащая некоторые символы и слова.
  6. Строка s выводится на экран с помощью функции puts.
  7. Затем вызывается функция str_part с аргументом s, и результат выводится на экран с помощью функции puts.
  8. В конце функции main возвращается 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы