В заданном массиве строк найти все слова, содержащие заданное количество гласных букв, и вывести их - C (СИ)

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

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

Помогите, пожалуйста, написать программу!)

Решение задачи: «В заданном массиве строк найти все слова, содержащие заданное количество гласных букв, и вывести их»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int is_vowels(const char* s, int n){
    int k, j;
    static char  cs[26];
    static const char* i = NULL;
 
    if(i == NULL){
        memset(cs, 0, sizeof(cs));
        for(i = "AEIOUY"; *i; ++i)
            cs[*i - 'A'] = 1;
    }
 
    for(j = 0; *s; ++s){
        k = *s & 0xDF;
        if(k >= 'A' && k <= 'Z'){
            if(cs[k - 'A'])
                ++j;
        }
    }
    return (j == n);    
}
 
int main(void){
    int   n, i;
    char* w[] = {
        {"ESI"}, {"EBX"}, {"EDI"}, {"EAX"}, {"ESP"}, {"EBP"}, {"EDX"}, {"ECI"}
    };
    n = sizeof(w)/sizeof(w[0]);
 
    //вывести слова с двумя гласными
    for(i = 0; i < n; ++i){
        if(is_vowels(w[i], 2))
            printf("%s ", w[i]);
    }
    putchar('\n');
 
    //вывести слова с одним гласным
    for(i = 0; i < n; ++i){
        if(is_vowels(w[i], 1))
            printf("%s ", w[i]);
    }
    return 0;
}

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

В данном коде на языке C реализована функция is_vowels, которая принимает на вход два параметра: строку s и число n. Функция проверяет, содержит ли строка s заданное количество гласных букв (гласными считаются буквы A, E, I, O, U, Y). В функции используется массив cs, который содержит булевые значения для каждой буквы алфавита: если значение равно 1, то буква является гласной. В начале функции, если массив cs еще не инициализирован, он инициализируется значением 0. Затем происходит проверка каждой буквы строки s на принадлежность к гласным буквам. Если функция is_vowels возвращает значение 1, значит строка s содержит заданное количество гласных букв. В функции main создается массив строк w, содержащий несколько слов. Затем выполняется два прохода по массиву w: первый проход выводит на экран слова с двумя гласными буквами, второй проход выводит слова с одной гласной буквой. Пример вывода на экран: ESI EBX EBP ECI

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


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

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

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