Menu
Coddy logo textTech

Repaso: Contador de frecuencia de palabras

Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 63 de 63.

challenge icon

Desafío

Fácil

Crea un programa en C que implemente un contador de frecuencia de palabras para analizar la entrada de texto. Tu programa debe:

  1. Escribir una función llamada countWordOccurrences que:
    • Acepte dos parámetros char*: sentence y targetWord
    • Devuelva un entero que represente el número de veces que aparece la palabra objetivo en la oración
    • Use un bucle para procesar la oración carácter por carácter
    • Identifique los límites de las palabras usando espacios como delimitadores
    • Extraiga cada palabra de la oración y la compare con la palabra objetivo usando strcmp()
    • Cuente las coincidencias exactas (comparación sensible a mayúsculas y minúsculas)
  2. Escribir una función llamada extractWord que:
    • Acepte una oración char*, un entero startIndex y un parámetro de palabra char*
    • Devuelva un entero que represente el índice posterior a la palabra extraída
    • Extraiga una sola palabra comenzando desde startIndex hasta encontrar un espacio o un terminador nulo
    • Almacene la palabra extraída en el parámetro word
    • Añada un terminador nulo para completar la palabra extraída
  3. Escribir una función llamada analyzeText que:
    • Acepte un parámetro de oración char*
    • Devuelva un entero que represente el número total de palabras en la oración
    • Cuente las palabras identificando los espacios como separadores
    • Gestione correctamente varios espacios consecutivos (los trate como separadores individuales)
  4. En la función principal:
    • Declare un arreglo de caracteres inputSentence de tamaño 200
    • Declare un arreglo de caracteres searchWord de tamaño 50
    • Lea una oración de la entrada (puede contener varias palabras separadas por espacios)
    • Lea una palabra objetivo que se buscará
    • Llame a la función analyzeText e imprima el recuento total de palabras con este formato exacto: Total words: [count]
    • Llame a la función countWordOccurrences e imprima el resultado con este formato exacto: Occurrences of '[searchWord]': [count]
    • Calcule e imprima la frecuencia de la palabra como un porcentaje con exactamente 1 decimal, usando este formato exacto: Frequency: [percentage]%
    • Determine e imprima la categoría de frecuencia:
      • Si la frecuencia es 0.0%: imprima Category: Not found
      • Si la frecuencia es mayor que 0.0% pero menor que 20.0%: imprima Category: Rare
      • Si la frecuencia está entre 20.0% y 50.0% (inclusive): imprima Category: Common
      • Si la frecuencia es mayor que 50.0%: imprima Category: Frequent

Este desafío pone a prueba tu dominio de la manipulación de cadenas, la tokenización y el procesamiento de texto. Practicarás cómo dividir oraciones en palabras individuales, comparar cadenas para encontrar coincidencias exactas e implementar varias funciones que trabajan juntas para analizar datos de texto. El programa demuestra técnicas de procesamiento de texto del mundo real, esenciales para muchas aplicaciones en C.

Pruébalo tú mismo

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

// TODO: Escribe tu función extractWord aquí

// TODO: Escribe tu función countWordOccurrences aquí

// TODO: Escribe tu función analyzeText aquí

int main() {
    char inputSentence[200];
    char searchWord[50];
    
    // Leer la oración de entrada
    fgets(inputSentence, sizeof(inputSentence), stdin);
    // Eliminar el carácter de nueva línea si está presente
    inputSentence[strcspn(inputSentence, "\n")] = '\0';
    
    // Leer la palabra de búsqueda
    scanf("%s", searchWord);
    
    // TODO: Escribe tu código a continuación
    // Llamar a la función analyzeText y almacenar el recuento total de palabras
    // Llamar a la función countWordOccurrences y almacenar las ocurrencias
    // Calcular el porcentaje de frecuencia
    // Determinar la categoría de frecuencia
    
    // Mostrar los resultados en el formato requerido
    // 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;
}

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C online