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

  1. Сначала в функции slova определяется переменная i, которая итерирует по строке str, и переменная colSlov, которая инициализируется единицей и используется для подсчета числа слов в строке. Значение переменной colSlov увеличивается на единицу каждый раз, когда в строке встречается пробел.
  2. Далее функция выделяет первое слово в строке, используя функцию strtok, которая принимает на вход строку и разделитель (в данном случае пробел, запятую, точку, восклицательный знак, вопросительный знак, двоеточие и точку с запятой). Выделенное слово выводится на экран.
  3. Затем в цикле while, который продолжается до тех пор, пока i меньше colSlov, функция strtok вызывается снова, на этот раз без аргументов, чтобы выделить следующее слово. Если это слово не является последним (то есть i меньше colSlov), оно также выводится на экран.
  4. В конце функции выводится символ новой строки, чтобы перейти на новую строку.
  5. В функции main вводится строка с помощью функции fgets, и эта строка передается в функцию slova. После этого программа ожидает нажатия любой клавиши с помощью функции system, прежде чем завершиться.

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы