Определить слово, в котором доля согласных максимальна - C (СИ)

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

Для каждого слова заданного предложения указать долю согласных. Определить слово, в котором доля согласных максимальна. Никак не могу сделать. Помогите пожалуйстаа)

Код к задаче: «Определить слово, в котором доля согласных максимальна - C (СИ)»

textual
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define DELIMITERS " ?.!,\r\n\t"
 
int is_vowel(char ch)
{
    ch = tolower(ch);
    return ch == 'a' ||
        ch == 'e' ||
        ch == 'o' ||
        ch == 'u' ||
        ch == 'i';
}
 
size_t count_if(const char *str, int (*predicate)(char))
{
    size_t count = 0;
    while (str && *str)
        if (predicate(*str++))
            count++;
    return count;
}
 
const char* magic(char *s)
{
    const char* ptr = NULL;
    const char* res = NULL;
    double max = 0.0;
    double tmp = 0.0;
    size_t vowel_count = 0;
    size_t len = 0;
    for (ptr = strtok(s, DELIMITERS); ptr; ptr = strtok(NULL, DELIMITERS))
    {
        len = strlen(ptr);
        vowel_count = count_if(ptr, is_vowel);
        tmp = (100.0 * (len - vowel_count)) / len;
        printf("%s %2.2lf%%\n", ptr, tmp);
        if (tmp > max)
        {
            max = tmp;
            res = ptr;
        }
    }
    return res;
}
 
int main()
{
    char s[BUFSIZ];
    const char *p = NULL;
    fgets(s, BUFSIZ, stdin);
    p = magic(s);
    if (p)
    {
        // TODO
    }
    return EXIT_FAILURE;
}

13   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы