Menu
Coddy logo textTech

Wiederholung: Wortfrequenz-Zähler

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 63 von 63.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein C-Programm, das einen Wortfrequenzzähler implementiert, um Texteingaben zu analysieren. Ihr Programm sollte:

  1. Schreiben Sie eine Funktion namens countWordOccurrences, die:
    • Zwei char* Parameter entgegennimmt: sentence und targetWord
    • Einen Integer zurückgibt, der angibt, wie oft das Zielwort im Satz vorkommt
    • Eine Schleife verwendet, um den Satz Zeichen für Zeichen zu verarbeiten
    • Wortgrenzen unter Verwendung von Leerzeichen als Trennzeichen identifiziert
    • Jedes Wort aus dem Satz extrahiert und es mit dem Zielwort unter Verwendung von strcmp() vergleicht
    • Exakte Übereinstimmungen zählt (Groß-/Kleinschreibung beachten)
  2. Schreiben Sie eine Funktion namens extractWord, die:
    • Einen char* Satz, einen Integer startIndex und einen char* Wort-Parameter entgegennimmt
    • Einen Integer zurückgibt, der den Index nach dem extrahierten Wort darstellt
    • Ein einzelnes Wort extrahiert, beginnend bei startIndex, bis ein Leerzeichen oder ein Null-Terminator gefunden wird
    • Das extrahierte Wort im Parameter word speichert
    • Einen Null-Terminator hinzufügt, um das extrahierte Wort zu vervollständigen
  3. Schreiben Sie eine Funktion namens analyzeText, die:
    • Einen char* Satz-Parameter entgegennimmt
    • Einen Integer zurückgibt, der die Gesamtzahl der Wörter im Satz darstellt
    • Wörter zählt, indem Leerzeichen als Trennzeichen identifiziert werden
    • Mehrere aufeinanderfolgende Leerzeichen korrekt verarbeitet (behandelt sie als einzelne Trennzeichen)
  4. In der Hauptfunktion (main):
    • Deklarieren Sie ein Zeichen-Array inputSentence der Größe 200
    • Deklarieren Sie ein Zeichen-Array searchWord der Größe 50
    • Lesen Sie einen Satz von der Eingabe ein (kann mehrere durch Leerzeichen getrennte Wörter enthalten)
    • Lesen Sie ein Zielwort ein, nach dem gesucht werden soll
    • Rufen Sie die Funktion analyzeText auf und geben Sie die Gesamtwortzahl in diesem exakten Format aus: Total words: [count]
    • Rufen Sie die Funktion countWordOccurrences auf und geben Sie das Ergebnis in diesem exakten Format aus: Occurrences of '[searchWord]': [count]
    • Berechnen und geben Sie die Wortfrequenz als Prozentsatz mit genau einer Dezimalstelle in diesem exakten Format aus: Frequency: [percentage]%
    • Bestimmen und geben Sie die Frequenzkategorie aus:
      • Wenn die Frequenz 0.0% ist: geben Sie Category: Not found aus
      • Wenn die Frequenz größer als 0.0%, aber kleiner als 20.0% ist: geben Sie Category: Rare aus
      • Wenn die Frequenz zwischen 20.0% und 50.0% (einschließlich) liegt: geben Sie Category: Common aus
      • Wenn die Frequenz größer als 50.0% ist: geben Sie Category: Frequent aus

Diese Herausforderung testet Ihre Beherrschung der String-Manipulation, Tokenisierung und Textverarbeitung. Sie üben das Zerlegen von Sätzen in einzelne Wörter, das Vergleichen von Strings auf exakte Übereinstimmungen und das Implementieren mehrerer Funktionen, die zusammenarbeiten, um Textdaten zu analysieren. Das Programm demonstriert praxisnahe Textverarbeitungstechniken, die für viele C-Anwendungen unerlässlich sind.

Probier es selbst

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

// TODO: Schreiben Sie hier Ihre extractWord-Funktion

// TODO: Schreiben Sie hier Ihre countWordOccurrences-Funktion

// TODO: Schreiben Sie hier Ihre analyzeText-Funktion

int main() {
    char inputSentence[200];
    char searchWord[50];
    
    // Eingabesatz lesen
    fgets(inputSentence, sizeof(inputSentence), stdin);
    // Zeilenumbruchzeichen entfernen, falls vorhanden
    inputSentence[strcspn(inputSentence, "\n")] = '\0';
    
    // Suchwort lesen
    scanf("%s", searchWord);
    
    // TODO: Schreiben Sie Ihren Code unten
    // analyzeText-Funktion aufrufen und Gesamtwortzahl speichern
    // countWordOccurrences-Funktion aufrufen und Vorkommen speichern
    // Häufigkeitsprozentsatz berechnen
    // Häufigkeitskategorie bestimmen
    
    // Ergebnisse im erforderlichen Format ausgeben
    // 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;
}

Alle Lektionen in Logic & Flow