Menu
Coddy logo textTech

Wiederholung: Wortfrequenz-Zähler

Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 63 von 63.

challenge icon

Aufgabe

Einfach

Erstelle ein C-Programm, das einen Worthäufigkeitszähler implementiert, um Texteingaben zu analysieren. Dein Programm sollte:

  1. Eine Funktion namens countWordOccurrences schreiben, die:
    • Zwei char*-Parameter übernimmt: sentence und targetWord
    • Eine Ganzzahl zurückgibt, die angibt, wie oft das Zielwort im Satz vorkommt
    • Eine Schleife verwendet, um den Satz Zeichen für Zeichen zu verarbeiten
    • Wortgrenzen mithilfe von Leerzeichen als Trennzeichen erkennt
    • Jedes Wort aus dem Satz extrahiert und es mithilfe von strcmp() mit dem Zielwort vergleicht
    • Exakte Übereinstimmungen zählt (Groß-/Kleinschreibung wird berücksichtigt)
  2. Eine Funktion namens extractWord schreiben, die:
    • Einen char*-Satz, eine Ganzzahl startIndex und einen char*-Wortparameter übernimmt
    • Eine Ganzzahl zurückgibt, die den Index nach dem extrahierten Wort angibt
    • Ein einzelnes Wort beginnend bei startIndex extrahiert, bis ein Leerzeichen oder ein Nullterminator gefunden wird
    • Das extrahierte Wort im Parameter word speichert
    • Einen Nullterminator hinzufügt, um das extrahierte Wort abzuschließen
  3. Eine Funktion namens analyzeText schreiben, die:
    • Einen char*-Satzparameter übernimmt
    • Eine Ganzzahl zurückgibt, die die Gesamtzahl der Wörter im Satz angibt
    • Wörter zählt, indem sie Leerzeichen als Trennzeichen erkennt
    • Mehrere aufeinanderfolgende Leerzeichen korrekt verarbeitet (sie als einzelne Trennzeichen behandelt)
  4. In der Hauptfunktion:
    • Ein Zeichenarray inputSentence der Größe 200 deklarieren
    • Ein Zeichenarray searchWord der Größe 50 deklarieren
    • Einen Satz aus der Eingabe lesen (er darf mehrere durch Leerzeichen getrennte Wörter enthalten)
    • Ein zu suchendes Zielwort einlesen
    • Die Funktion analyzeText aufrufen und die Gesamtzahl der Wörter in diesem exakten Format ausgeben: Total words: [count]
    • Die Funktion countWordOccurrences aufrufen und das Ergebnis in diesem exakten Format ausgeben: Occurrences of '[searchWord]': [count]
    • Die Worthäufigkeit als Prozentsatz mit genau einer Dezimalstelle berechnen und in diesem exakten Format ausgeben: Frequency: [percentage]%
    • Die Häufigkeitskategorie bestimmen und ausgeben:
      • Wenn die Häufigkeit 0.0 % beträgt: Category: Not found ausgeben
      • Wenn die Häufigkeit größer als 0.0 %, aber kleiner als 20.0 % ist: Category: Rare ausgeben
      • Wenn die Häufigkeit zwischen 20.0 % und 50.0 % (einschließlich) liegt: Category: Common ausgeben
      • Wenn die Häufigkeit größer als 50.0 % ist: Category: Frequent ausgeben

Diese Herausforderung testet deine Kenntnisse in der String-Manipulation, Tokenisierung und Textverarbeitung. Du übst, Sätze in einzelne Wörter zu zerlegen, Strings auf exakte Übereinstimmungen zu vergleichen und mehrere Funktionen zu implementieren, die zusammenarbeiten, um Textdaten zu analysieren. Das Programm demonstriert praxisnahe Techniken der Textverarbeitung, die für viele C-Anwendungen unverzichtbar 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 Logik & Ablauf

Übe selbstständig: Online-C-Compiler