Посчитать, сколько раз заданное слово встречается в тексте - 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, что означает успешный конец работы программы