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