Menu
Coddy logo textTech

Récap : Compteur de fréquence des mots

Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 63 sur 63.

challenge icon

Défi

Facile

Créez un programme C qui implémente un compteur de fréquence de mots pour analyser une saisie de texte. Votre programme doit :

  1. Écrire une fonction nommée countWordOccurrences qui :
    • Prend deux paramètres char* : sentence et targetWord
    • Retourne un entier représentant le nombre de fois que le mot cible apparaît dans la phrase
    • Utilise une boucle pour traiter la phrase caractère par caractère
    • Identifie les limites des mots en utilisant les espaces comme délimiteurs
    • Extrait chaque mot de la phrase et le compare avec le mot cible en utilisant strcmp()
    • Compte les correspondances exactes (comparaison sensible à la casse)
  2. Écrire une fonction nommée extractWord qui :
    • Prend une phrase char*, un entier startIndex, et un paramètre char* word
    • Retourne un entier représentant l'index après le mot extrait
    • Extrait un seul mot en commençant par startIndex jusqu'à ce qu'un espace ou un terminateur nul soit trouvé
    • Stocke le mot extrait dans le paramètre word
    • Ajoute un terminateur nul pour compléter le mot extrait
  3. Écrire une fonction nommée analyzeText qui :
    • Prend un paramètre char* sentence
    • Retourne un entier représentant le nombre total de mots dans la phrase
    • Compte les mots en identifiant les espaces comme séparateurs
    • Gère correctement les espaces consécutifs multiples (les traite comme des séparateurs uniques)
  4. Dans la fonction main :
    • Déclarer un tableau de caractères inputSentence de taille 200
    • Déclarer un tableau de caractères searchWord de taille 50
    • Lire une phrase à partir de l'entrée (peut contenir plusieurs mots séparés par des espaces)
    • Lire un mot cible à rechercher
    • Appeler la fonction analyzeText et afficher le nombre total de mots dans ce format exact : Total words: [count]
    • Appeler la fonction countWordOccurrences et afficher le résultat dans ce format exact : Occurrences of '[searchWord]': [count]
    • Calculer et afficher la fréquence du mot sous forme de pourcentage avec exactement 1 décimale dans ce format exact : Frequency: [percentage]%
    • Déterminer et afficher la catégorie de fréquence :
      • Si la fréquence est 0.0% : afficher Category: Not found
      • Si la fréquence est supérieure à 0.0% mais inférieure à 20.0% : afficher Category: Rare
      • Si la fréquence est comprise entre 20.0% et 50.0% (inclus) : afficher Category: Common
      • Si la fréquence est supérieure à 50.0% : afficher Category: Frequent

Ce défi teste votre maîtrise de la manipulation de chaînes de caractères, de la tokenisation et du traitement de texte. Vous vous exercerez à décomposer des phrases en mots individuels, à comparer des chaînes pour des correspondances exactes et à implémenter plusieurs fonctions qui travaillent ensemble pour analyser des données textuelles. Le programme démontre des techniques de traitement de texte du monde réel essentielles pour de nombreuses applications en C.

Essayez vous-même

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

// TODO : Écrivez votre fonction extractWord ici

// TODO : Écrivez votre fonction countWordOccurrences ici

// TODO : Écrivez votre fonction analyzeText ici

int main() {
    char inputSentence[200];
    char searchWord[50];
    
    // Lire la phrase d'entrée
    fgets(inputSentence, sizeof(inputSentence), stdin);
    // Supprimer le caractère de nouvelle ligne s'il est présent
    inputSentence[strcspn(inputSentence, "\n")] = '\0';
    
    // Lire le mot à rechercher
    scanf("%s", searchWord);
    
    // TODO : Écrivez votre code ci-dessous
    // Appeler la fonction analyzeText et stocker le nombre total de mots
    // Appeler la fonction countWordOccurrences et stocker les occurrences
    // Calculer le pourcentage de fréquence
    // Déterminer la catégorie de fréquence
    
    // Afficher les résultats dans le format requis
    // 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;
}

Toutes les leçons de Logic & Flow