Определить каких букв больше - гласных или согласных - C (СИ)
Формулировка задачи:
Дана непустая последовательность цифр и строчных латинских букв,за которой следует точка.Определить,каких букв - гласных(a,e,i,o,u) или согласных больше в этом множестве.
помогите написать программу
Решение задачи: «Определить каких букв больше - гласных или согласных»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int function(const char* text)
{
const char CVowels[] = "aeiouy";
int cnt = 0;
for (; *text; ++text)
{
if (isalpha(*text))
{
if (strchr(CVowels, tolower(*text)))
{
cnt++;
}
else
{
cnt--;
}
}
}
return cnt;
}
int main()
{
int result = function("Hello World");
if (result > 0)
{
printf("vowels");
}
else if (result < 0)
{
printf("consonants");
}
else
{
printf("equally");
}
return 0;
}
Объяснение кода листинга программы
В данном коде определена функция, которая подсчитывает количество гласных букв в переданной строке.
Список гласных букв задан в виде массива CVowels, содержащего строку aeiouy.
В основной функции main() вызывается функция function() с аргументом Hello World.
Далее результат функции function() проверяется на положительность. Если результат больше нуля, то выводится сообщение vowels, если результат меньше нуля - выводится сообщение consonants, иначе выводится сообщение equally.
Код не идеален и не оптимален, так как не учитывает регистр букв и не корректно обрабатывает случай, когда в строке присутствуют только согласные буквы или только гласные.