Подсчитать количество слов в каждом заданном предложении - C (СИ)
Формулировка задачи:
помогите пожалуйста с программой на языке си
задание: даны n предложений. подсчитать количество слов в каждом предложении
Решение задачи: «Подсчитать количество слов в каждом заданном предложении»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
size_t words_count(char * str, const char * delim) {
return ( strtok(str, delim) ) ? 1 + words_count(NULL, delim) : 0;
}
void words_in_sentences(char * text, const char * words_delim, const char * sentences_delim) {
char * current, * next;
size_t sentcount;
for ( sentcount = 0, current = strtok_r(text, sentences_delim, &next); current && ++sentcount; current = strtok_r(NULL, sentences_delim, &next) )
printf("%lu: %lu word(s)\n", sentcount, words_count(current, words_delim));
}
#define WORDS_DELIM " \t\n"
#define SENTENCES_DELIM ".!?"
int main(void) {
char text[] = "Jingle bells.\nJingle bells.\nJingle all the Way!";
printf("TEXT:\n%s\nWORDS IN SENTENCES:\n", text);
words_in_sentences(text, WORDS_DELIM, SENTENCES_DELIM);
return 0;
}
Объяснение кода листинга программы
- В функции words_count происходит подсчет количества слов в строке. Функция использует функцию strtok для разделения строки на слова и символы-разделители. Если функция strtok вернула значение, отличное от NULL, то это слово, и функция вызывает себя рекурсивно для подсчета слов в оставшейся части строки. Если функция strtok вернула NULL, то это означает, что все слова в строке уже были обработаны, и функция возвращает общее количество слов.
- В функции words_in_sentences происходит подсчет количества слов в каждом предложении исходного текста. Функция использует функцию strtok_r для разделения текста на предложения и символы-разделители. В цикле for происходит обработка каждого предложения. Для каждого предложения вызывается функция words_count для подсчета количества слов, и это количество выводится на экран.
- В функции main создается тестовый текст, который содержит несколько предложений. Этот текст выводится на экран. Затем вызывается функция words_in_sentences для подсчета количества слов в каждом предложении, и результаты выводятся на экран.