Посчитать, сколько раз заданное слово встречается в тексте - C (СИ)
Формулировка задачи:
пролистал огромное количество темок, на самое ближайшее, что я смог найти это вот этот код программы, который ищет количество вхождений каждого слова в тексте. помогите пожалуйста "упростить" данную программу для того, чтобы она искала лишь одно введенное с клавиатуры слово. минут 40 пытался разобрать в коде программы, но безуспешно, не перевариваю я пока на 1 курсе указатели)
#include <stdio.h> #include <string.h> int main() { char text[70]; char *a[35],*pov[35]; char* t; int i=0,j,k,sk,pov_count[35],h=0,d,f; printf("\nVvedite text:\n"); gets(text); printf("\n"); t=strtok(text," "); while (t != NULL) { a[i]=t; t = strtok (NULL, " "); i++; } for(j=0; j<i; j++) { sk=0; f=0; for(k=0; k<i; k++) { if (strcmp(a[j], a[k]) == 0) { sk++; } } for(d=0; d<h; d++) { if (strcmp(a[j], pov[d]) == 0) { f++; } } if(f == 0) { pov[h]=a[j]; pov_count[h]=sk; h++; } } for(j=0; j<h; j++) { printf("\nSlovo povtotyechiesy: %s",pov[j]); printf("\nPovtoreniy : %i",pov_count[j]); printf("\n"); } printf("\n"); return 0; }
Решение задачи: «Посчитать, сколько раз заданное слово встречается в тексте»
textual
Листинг программы
#include <iostream> #include <cctype> #include <string> int main() { std::string word; std::string str = "my name is john klop qwerty num name my john kate jane ups qwerty my name"; std::cout <<"Slovo: "; getline (std::cin, word); if (str.find (word)==-1) std::cout <<"0" <<'\n'; else { int k = 0; while (str.find(word)!=-1) { ++k; str.erase (str.find(word),word.size()); } std::cout <<k <<'\n'; } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с потоками ввода-вывода и строками
- Объявление переменных:
—
word
- переменная для хранения введенного пользователем слова —str
- переменная для хранения текста, в котором необходимо найти количество вхождений заданного слова - Вывод на экран сообщения с просьбой ввести искомое слово
- Считывание искомого слова с помощью функции
getline
- Проверка наличия искомого слова в строке с помощью метода
find
- Если искомый слова нет в строке, то выводится сообщение
0
- Иначе, объявляется переменная
k
для хранения количества найденных вхождений слова - В цикле
while
с помощью методаfind
ищем следующее вхождение искомого слова в строке - Если слово найдено, то увеличивается значение переменной
k
и с помощью методаerase
удаляется найденное вхождение слова из строки - Цикл продолжается до тех пор, пока не будет найдено следующее вхождение слова
- После окончания цикла выводится на экран значение переменной
k
, которая содержит количество найденных вхождений слова - Возвращение значения 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д