Все согласные буквы в строке сделать заглавными - C (СИ)

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

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

Задача нужна с комментами Лимит времени 2000/4000/4000/4000 мс. Лимит памяти 65000/65000/65000/65000 Кб. Дана строка S, состоящая из латинских букв и пробелов. Требуется произвести следующие действия: Все согласные буквы в строке S сделать заглавными; Подсчитать количество гласных букв в строке S; Подсчитать количество слов в строке S, начинающихся на согласную букву. К гласным буквам относятся 'A', 'E', 'I', 'O', 'U', 'Y' (и соответствующие им строчные), к согласным — все остальные. Словом считается непрерывная последовательность буквенных символов. Входные данные Входной поток содержит строку S. Длина S не превосходит 100 символов. Выходные данные В первой строке выведите строку S после преобразований. Во второй строке выведите два целых числа — соответственно число гласных букв в S и число слов в S, начинающихся на согласную букву.

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

textual
Листинг программы
#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, начинающихся на согласную букву.

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


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

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

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