Menu
Coddy logo textTech

Повторение: счетчик частоты слов

Часть раздела Logic & Flow путешествия по C на Coddy — урок 63 из 63.

challenge icon

Задание

Легко

Создайте программу на языке C, которая реализует счетчик частоты слов для анализа вводимого текста. Ваша программа должна:

  1. Написать функцию с именем countWordOccurrences, которая:
    • Принимает два параметра типа char*: sentence и targetWord
    • Возвращает целое число, представляющее количество раз, которое целевое слово встречается в предложении
    • Использует цикл для посимвольной обработки предложения
    • Определяет границы слов, используя пробелы в качестве разделителей
    • Извлекает каждое слово из предложения и сравнивает его с целевым словом с помощью strcmp()
    • Считает точные совпадения (с учетом регистра)
  2. Написать функцию с именем extractWord, которая:
    • Принимает предложение char*, целое число startIndex и параметр char* word
    • Возвращает целое число, представляющее индекс после извлеченного слова
    • Извлекает одно слово, начиная с startIndex, пока не встретится пробел или нулевой терминатор
    • Сохраняет извлеченное слово в параметре word
    • Добавляет нулевой терминатор для завершения извлеченного слова
  3. Написать функцию с именем analyzeText, которая:
    • Принимает параметр предложения char*
    • Возвращает целое число, представляющее общее количество слов в предложении
    • Считает слова, идентифицируя пробелы как разделители
    • Корректно обрабатывает несколько идущих подряд пробелов (рассматривает их как один разделитель)
  4. В функции main:
    • Объявить символьный массив inputSentence размером 200
    • Объявить символьный массив searchWord размером 50
    • Прочитать предложение из входных данных (может содержать несколько слов, разделенных пробелами)
    • Прочитать целевое слово для поиска
    • Вызвать функцию analyzeText и вывести общее количество слов в точном формате: Total words: [count]
    • Вызвать функцию countWordOccurrences и вывести результат в точном формате: Occurrences of '[searchWord]': [count]
    • Рассчитать и вывести частоту слова в процентах ровно с 1 десятичным знаком в точном формате: Frequency: [percentage]%
    • Определить и вывести категорию частоты:
      • Если частота равна 0.0%: вывести Category: Not found
      • Если частота больше 0.0%, но меньше 20.0%: вывести Category: Rare
      • Если частота составляет от 20.0% до 50.0% (включительно): вывести Category: Common
      • Если частота больше 50.0%: вывести Category: Frequent

Эта задача проверяет ваше мастерство в манипулировании строками, токенизации и обработке текста. Вы попрактикуетесь в разбиении предложений на отдельные слова, сравнении строк на точное соответствие и реализации нескольких функций, которые работают вместе для анализа текстовых данных. Программа демонстрирует реальные методы обработки текста, необходимые для многих приложений на C.

Попробуйте сами

#include <stdio.h>
#include <string.h>

// TODO: Напишите здесь вашу функцию extractWord

// TODO: Напишите здесь вашу функцию countWordOccurrences

// TODO: Напишите здесь вашу функцию analyzeText

int main() {
    char inputSentence[200];
    char searchWord[50];
    
    // Чтение входного предложения
    fgets(inputSentence, sizeof(inputSentence), stdin);
    // Удаление символа новой строки, если он присутствует
    inputSentence[strcspn(inputSentence, "\n")] = '\0';
    
    // Чтение искомого слова
    scanf("%s", searchWord);
    
    // TODO: Напишите ваш код ниже
    // Вызовите функцию analyzeText и сохраните общее количество слов
    // Вызовите функцию countWordOccurrences и сохраните количество вхождений
    // Рассчитайте процент частоты
    // Определите категорию частоты
    
    // Вывод результатов в требуемом формате
    // printf("Total words: %d\n", totalWords);
    // printf("Occurrences of '%s': %d\n", searchWord, occurrences);
    // printf("Frequency: %.1f%%\n", frequency);
    // printf("Category: %s\n", category);
    
    return 0;
}

Все уроки раздела Logic & Flow