- Gegeben ist eine Textdatei dict-american.txt einer unsortierten amerikanischen Wort- liste. Schreiben Sie ein Programm zu verschiedenen lexikalischen Sortierungen dieser Wörter.
- a) Lesen Sie die Wortliste zeilenweise ein (siehe man fgets) und speichern Sie alle Wörter in Einlesereihenfolge in einem statischen array von char-pointern (ein Wort pro Feldelement) .
Ignorieren Sie dabei Wörter mit einer Länge von weniger als 4 Zeichen. (Nützliche Funktion: strdup() zur Erzeugung einer Kopie eines strings.)
Gehen Sie für das Einlesen von einer maximalen Wortlänge von 60 Zeichen und für die Länge des statischen arrays von max. 250 000 Wörtern aus. Beide Grenzwerte sind während des Einlesens auf Überschreitung zu prüfen, ggf. mit Meldung an den Benutzer (testen Sie dies mit temporär herunter gesetzen Obergrenzen).
- b) Geben Sie den Inhalt des arrays auszugsweise aus, indem Sie die ersten N Wörter und die letzten N Wörter des arrays zeilenweise und nummeriert ausgeben (mit z.B. N=20).
- c) Sortieren Sie das array lexikalisch aufsteigend (siehe man strcmp) mithilfe der Sys- tembibliotheks-Funktion qsort() (siehe man qsort) und geben Sie das sortierte array wie in b) auszugsweise aus.
- d) wie c), aber sortieren Sie lediglich nach dem dritten Zeichen im Wort.
- e) wie c), aber sortieren Sie nach der Länge, d.h. der Anzahl der Zeichen des Wortes (primäres Sortierkriterium), bei gleicher Wortlänge sollen die Wörter wiederum lexi- kalisch sortiert sein (sekundäres Sortierkriterium).
C:#include <stdio.h> #include <stdlib.h> int main(void) { FILE *fd; char *datei = "/Users/xyz/Desktop/Informatik 2/dict-american.txt"; int nRet; size_t *t = malloc(0); char **gptr = malloc(sizeof(char*)); *gptr = NULL; if ( (fd = fopen(datei,"r")) == NULL) { fprintf(stderr, "\nKonnte Datei %s nicht öffnen!", datei); return 1; } while( (nRet=getline(gptr, t, fd)) > 0) fputs(*gptr,stdout); return 0; }
Bis jetzt bekomme ich einfach die Liste mit den Wörtern der Textdatei zurück geliefert.
Mein Gedanke wäre jetzt ein if schleife einbauen arrays deklarieren nur kommt mir Aufgabe 2a) wie hierogylphen zu Augen.
- a) Lesen Sie die Wortliste zeilenweise ein (siehe man fgets) und speichern Sie alle Wörter in Einlesereihenfolge in einem statischen array von char-pointern (ein Wort pro Feldelement) .
Zuletzt bearbeitet von einem Moderator: