Удалить из слова все согласные буквы - C (СИ)
Формулировка задачи:
Решение задачи: «Удалить из слова все согласные буквы»
#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 или пустую строку.