Удалить из слова все согласные буквы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Найти функцию которая получает слово на английском языке, удаляет из него все согласные буквы и выводит только оставшиеся гласные. Помогите, не могу справиться, даже не понимаю с чего начать.

Решение задачи: «Удалить из слова все согласные буквы»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int is_gl(char s)
{
char D[13]="AaEeIiOoUuYy";
int i;
  for(i=0;i<13;i++)
  {
    if(s==D[i])return 1;
  }
  return 0;
}
char* rem_chs(char* s)
{
    char* p=(char*)malloc(sizeof(char)*strlen(s)+1);
    char *pp=p, *ss=s;
    if(pp!=NULL)
    {
        while(*ss)
        {
            if(is_gl(*ss))
            {
                ++ss; continue;
            }
            else
            {
                *pp++=*ss;
                ++ss;
            }
        }
        *pp='\0';
        s=p;
        free(p);
        return s;
    }
    return NULL;
}
 
int main(void)
{
    puts( rem_chs("algol"));
    return 0;
}

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

Этот код на языке C предназначен для удаления всех согласных букв из строки. Сначала определена функция is_gl, которая проверяет, является ли символ гласной (A, a, E, e, I, i, O, o, U, u, Y, y). Эта функция использует массив символов D размером 13, который содержит все гласные буквы в нижнем и верхнем регистре. Затем определена функция rem_chs, которая принимает строку и возвращает новую строку без согласных букв. Сначала функция выделяет память под новую строку, затем проходит по исходной строке, копируя в новую только те символы, которые не являются согласными. В основной функции main новая строка без согласных букв выводится на экран. Обратите внимание, что этот код не обрабатывает ошибки, например, что будет, если передать функции rem_chs NULL или пустую строку.

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


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

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

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