С++: Удвоить гласные буквы английского алфавита в строке

Задача:

Написать программу, которая принимает с клавиатуры строку и выводит ее, дублируя все английские гласные буквы.

Решить можно несколькими способами. Я выработал такой код:


#include "stdafx.h"
#include <string.h>

void DubleEngLeters(char S[])
{
char ChangeString [255] = "";

for (int i = 0; i < strlen(S); i++)
{
if (S[i] == 'A' ||
S[i] == 'E' ||
S[i] == 'U' ||
S[i] == 'I' ||
S[i] == 'O' ||
S[i] == 'a' ||
S[i] == 'e' ||
S[i] == 'u' ||
S[i] == 'i' ||
S[i] == 'o')
{
char temp [3];
temp[0] = S[i];
temp[1] = S[i];
temp[2] = '\0';
strcat(ChangeString, temp);
}
else
{
char temp2 [2];
temp2[0] = S[i];
temp2[1] = '\0';
strcat(ChangeString, temp2);
}

}
puts(ChangeString);
}

int _tmain(int argc, _TCHAR* argv[])
{
char S [255];
printf("Enter string\n");
gets(S);
DubleEngLeters(S);

return 0;
}

Смысл такой: сначала читается строка, потом от нее вызывается функция, в которой длинным if-ом проверяется этот символ-гласный или согласный? Так как коды для регистров разные, проверяем для двух регистров. Далее из каждого символа делаем строку, так как функция strcat() умеет работать только со строками. Причем для гласных мы сразу дублируем символ в строке, а потом сцепляем ее с объявленной пустой строкой вначале функции. Таким образом эта строка нарастает маленькими кусочками, а в итоге получается результат.

 

Добавить комментарий