Подсчитать сколько раз в тексте встречается каждое слово и удалить то слово, которое встречается чаще всего - C (СИ)
Формулировка задачи:
Само задание : Вводим текст и для каждого из слов указать, сколько раз оно встречается в тексте. Слово, чаще всего встречающееся в тексте, удалить. Код Си.
Помогите пожалуйста!!
Решение задачи: «Подсчитать сколько раз в тексте встречается каждое слово и удалить то слово, которое встречается чаще всего»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 1000
void slova(char str[]){
//посчитаем число слов
size_t i=0;
size_t colSlov=1;
for(i=0; i<strlen(str); ++i)
if(str[i]==' ')
colSlov++;
//выделим первое слово
char* pch[colSlov];
pch[0] = strtok(str," ,.?!:;");
printf ("%s\n", pch[0]);
//выделим остальные слова и выведем
i=1;
while (i < colSlov)
{
pch[i] = strtok (NULL, " ,.?!:;");
if( pch[i]!=NULL)
printf ("%s\n", pch[i++]);
}
printf("\n");
}
int main(void) {
char A[N];
puts("Vvedite stroku");
fgets(A, N , stdin);
slova(A);
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
В данном коде реализована функция slova, которая принимает на вход строку и подсчитывает количество вхождений каждого слова в эту строку.
- Сначала в функции slova определяется переменная i, которая итерирует по строке str, и переменная colSlov, которая инициализируется единицей и используется для подсчета числа слов в строке. Значение переменной colSlov увеличивается на единицу каждый раз, когда в строке встречается пробел.
- Далее функция выделяет первое слово в строке, используя функцию strtok, которая принимает на вход строку и разделитель (в данном случае пробел, запятую, точку, восклицательный знак, вопросительный знак, двоеточие и точку с запятой). Выделенное слово выводится на экран.
- Затем в цикле while, который продолжается до тех пор, пока i меньше colSlov, функция strtok вызывается снова, на этот раз без аргументов, чтобы выделить следующее слово. Если это слово не является последним (то есть i меньше colSlov), оно также выводится на экран.
- В конце функции выводится символ новой строки, чтобы перейти на новую строку.
- В функции main вводится строка с помощью функции fgets, и эта строка передается в функцию slova. После этого программа ожидает нажатия любой клавиши с помощью функции system, прежде чем завершиться.