Дана строка разделенная пропусками. Подсчитать количество слов которые имеют не менее двух символов 'c' - C (СИ)
Формулировка задачи:
Помогите решить
Решение задачи: «Дана строка разделенная пропусками. Подсчитать количество слов которые имеют не менее двух символов 'c'»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define DELIM " \t\n"
#define CHR 'c'
int main(void) {
char buf[BUFSIZ];
while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
char * pw, * pc;
int cnt = 0;
for ( pw = strtok(buf, DELIM); pw; pw = strtok(NULL, DELIM) )
cnt += ( ( ( pc = strchr(pw, CHR) ) != NULL ) && ( strchr(pc + 1, CHR) != NULL ) );
printf("%d word(s) with two or more symbols %c\n", cnt, CHR);
}
return 0;
}
Объяснение кода листинга программы
В этом коде осуществляется подсчет количества слов в строке, разделенной пробелами, которые содержат два или более символа 'c'.
- Включаются необходимые заголовочные файлы:
stdio.hдля работы с функциями ввода-выводаstring.hдля работы со строками
- Определяются необходимые константы:
DELIM- разделитель (пробел, табуляция, перевод строки)CHR- символ, который должен присутствовать в словах (в данном случае 'c')
- Определяется переменная `buf`, которая будет использоваться для хранения строки, введенной пользователем.
- Осуществляется цикл, который будет выполняться до тех пор, пока пользователь вводит строку и она не пустая.
- Внутри цикла создаются две переменные:
pw- текущее словоpc- текущий символ в слове
- С помощью функции
strtokслово разбивается на отдельные символы и проверяется каждый символ:- Если символ равен 'c', то увеличивается счетчик
cnt
- Если символ равен 'c', то увеличивается счетчик
- После обработки всех слов в строке выводится количество слов, содержащих два или более символа 'c'.
- В конце программы возвращается 0, что означает успешное выполнение.