Определить количество слов в строке содержащих ровно два символа «С» - C (СИ)
Формулировка задачи:
Дана строка – предложение. Определить количество слов в строке
содержащих ровно два символа «С». Символ «С» указывает пользователь. Функции библиотек stlib.h и string.h использовать запрещено.
Решение задачи: «Определить количество слов в строке содержащих ровно два символа «С»»
textual
Листинг программы
#include <stdio.h>
size_t count_words(const char* s, char ch, size_t n) {
size_t k = 0u, i = 0u;
char c;
do {
c = *s & 0xDF;
if(c >= 'A' && c <= 'Z')
k += (*s == ch) ? 1 : 0;
else {
if(k == n)
i++;
k = 0;
}
} while( *s++ );
return i;
}
int main(void)
{
char str[] = "COC, [CISCO], CCCP, POL(CXCWC), COCA";
char ch = 'C';
printf("%u\n", count_words(str, ch, 2u));
return 0;
}
Объяснение кода листинга программы
- В функции count_words определены три переменные: k, i и c. Значение переменной k равно 0 и используется для подсчета слов, содержащих заданный символ. Значение переменной i также равно 0 и используется для подсчета количества слов, длина которых равна n. Значение переменной c используется для получения символа из строки s.
- В функции используется цикл do-while, который выполняется до тех пор, пока не будет достигнут конец строки.
- Внутри цикла проверяется, является ли текущий символ буквой. Если да, то проверяется, равен ли он заданному символу. Если да, то значение переменной k увеличивается на 1.
- Если текущий символ не является буквой, то проверяется значение переменной k. Если оно равно n, то значение переменной i увеличивается на 1. Затем значение переменной k сбрасывается в 0.
- В функции main определена строка str и символ ch, равный 'C'.
- В функцию count_words передаются значения str, ch и 2.
- Результат работы функции count_words выводится на экран с помощью функции printf.
- Значение 0 возвращается в конце функции main, что означает успешное завершение программы.