Все согласные буквы в строке сделать заглавными - C (СИ)
Формулировка задачи:
Решение задачи: «Все согласные буквы в строке сделать заглавными»
#include <stdio.h> #include <string.h> #include <ctype.h> //Подсчитать количество слов в строке S, начинающихся на согласную букву. int count_words(const char* s, const char* d){ int abc[26]; int i = 0, n = 0; memset(abc, 0, sizeof(abc)); for(; *d; ++d) abc[toupper(*d) - 'A'] = 1; do { if(! isalpha(*s)){ if((i > 0) && !abc[toupper(*(s - i)) - 'A']) ++n; i = 0; } else ++i; } while(*s++ != '\0'); return n; } int main(void){ char s[] = "Lisp, Pascal, APL, COBOL, Snobol, ADA."; printf("count words: %d\n", count_words(s, "AEIOUY")); return 0; }
Объяснение кода листинга программы
В данном коде реализована функция count_words, которая принимает два аргумента: указатель на строку s, в которой необходимо подсчитать количество слов, начинающихся на согласную букву, и указатель на строку d, которая содержит заглавные буквы согласных.
Внутри функции создается массив abc размером 26, который будет использоваться для подсчета количества слов, начинающихся на каждую из букв. Изначально все его элементы устанавливаются в 0.
Затем в цикле происходит проход по всем символам строки d. Если текущий символ является буквой, то его значение преобразуется в верхний регистр, затем вычитается код буквы 'A' (для получения числового представления буквы в алфавите), и результат сохраняется в соответствующем элементе массива abc.
Далее в функции main создается строка s, содержащая список языков программирования. Затем вызывается функция count_words, передавая ей эту строку и строку AEIOUY
(все заглавные буквы согласных). Результат подсчета выводится на экран.
Таким образом, данный код подсчитывает количество слов в строке s, начинающихся на согласную букву.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д