Merge remote-tracking branch 'origin/main'

This commit is contained in:
Sophia 2025-04-29 11:24:19 +02:00
parent 17f9c02ac5
commit 87d918809b

View File

@ -2,37 +2,53 @@
#include <ctype.h> #include <ctype.h>
#define MAX_WORDLENGTH 100 #define MAX_WORDLENGTH 100
#define MAX_TEXT_LENGTH 1000
int main() { int main() {
char dateiname[256]; // Puffer für den Dateinamen
printf("Bitte gib den Dateinamen ein (z.B. text.txt oder Pfad): ");
scanf("%255s", dateiname); // Dateinamen von Tastatur einlesen und Begrenzung auf 255 Zeichen schützt vor Pufferüberläufen
FILE *file = fopen(dateiname, "r"); // Datei öffnen
if (file == NULL) {
perror("Fehler beim oeffnen der Datei"); // Überprüfen ob die Eingabe stimmt
return 1;
}
int frequency[MAX_WORDLENGTH] = {0}; int frequency[MAX_WORDLENGTH] = {0};
char text[1000]; char text[MAX_TEXT_LENGTH];
int wordlength = 0; int wordlength = 0;
printf("Bitte geben Sie einen Text ein:\n");
fgets(text, sizeof(text), stdin);
for (int i = 0; text[i] != '\0'; i++) { // schleife liest while (fgets(text, sizeof(text), file) != NULL) { // Datei zeilenweis lesen
if (isalnum(text[i])) { //isalnum ueberprueft ob das es ein wort oder zahl ist also kein leerzeichen, satzzeichen for (int i = 0; text[i] != '\0'; i++) {
wordlength++; // zaehlt die buchstaben in dem wort if (isalnum(text[i])) { //isalnum ueberprüft ob das es ein wort oder zahl ist also kein leerzeichen, satzzeichen
} else { wordlength++; // zaehlt die buchstaben in dem wort
if (wordlength > 0) { // wenn das groeßer wird das als wordlength zb 3 buchstaben } else {
frequency[wordlength]++; // dann wird der counter fuer 3 hochgezaelt if (wordlength > 0 && wordlength < MAX_WORDLENGTH) { //überprüft pb ein wort gezählt werden kann (überschreitet micht max Wortlänge)
wordlength = 0; // um das naechste wort zu zaehlen frequency[wordlength]++; //Erhöht die Häufigkeit für die aktuelle Wortlänge
wordlength = 0; //Setzt den Zähler für die Wortlänge zurück für das nächste Wort
}
} }
} }
// Letztes Wort in der Zeile nicht vergessen
if (wordlength > 0 && wordlength < MAX_WORDLENGTH) {
frequency[wordlength]++;
wordlength = 0;
}
} }
fclose(file); // Datei schließen
if (wordlength > 0) { // Ergebnis ausgeben
frequency[wordlength]++; // das ist fuer das letzt wort damit es gezaehlt wird printf("\nHaeufigkeitsverteilung der Wortlaengen:\n");
} for (int i = 1; i < MAX_WORDLENGTH; i++) { //geht alle wortlängen durch
printf("Haeufigkeitsverteilung der Wortlaengen:\n");
for (int i = 1; i < MAX_WORDLENGTH; i++) { // geht von 1-100 und schaut welche wortlaengen vorhanden sind
if (frequency[i] > 0) { if (frequency[i] > 0) {
printf("Wortlaenge %d: %d\n", i, frequency[i]); // printet die anzahl printf("Wortlaenge %d: %d\n", i, frequency[i]); // überprüft die häufigkeit
} }
} }
return 0; return 0;
} }