Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Hinweis zu Aufgabe2 (EDIT)
Hi,
war heute kurz Gast in einer Rechnerübung und möchte ein paar Hinweise zur Aufgabe geben:
Die Aufgabe wird automatisch korrigiert, daher
-
unbedingt die Funktion strcmp verwenden damit eure Ausgabe mit der Ausgabe der Musterlösung übereinstimmt
-
die Teilaufgabe d soll eine kurze Beschreibung des Vorgehens beim Einlesen der Wörter in eine Datenstruktur und eine Beschreibung dieser Datenstruktur beeinhalten, zudem wie diese Datenstruktur benutzt wird um qsort damit arbeiten zu lassen (also evtl. Wrapper Funktion um strcmp beschreiben)
-
die Aufgabenstellung stammt aus vorhergehenden Semestern in denen es noch Geld für genug Übungsleiter gab um alles per Hand zu korrigieren, ich kann mir nicht vorstellen dass diesmal jmd die docs liest (weiss ich aber nciht sicher!)
Hoffe das hilft!
EDIT:
Noch ein paar Sachen die v.a. bei den automatisch korrigierten Aufgaben (zB auch wsort) relevant sind; habe das schon in meinen Uebungen gesagt aber hier nochmal fuer alle: (ist mir so beim Korrigieren von A1 aufgefallen)
- Alles was dazu fuehrt dass das Programm mit den Flags nicht kompiliert fuehrt in den Bereich 2-4 Punkte! Das Skript erkennt nicht ob dies vielleicht nur an einem vergessenen Header oder einem C++ Kommentar ( // ) gelegen hat!Also immer selbst auch mit allen verlangten Flags kompilieren (soweit nicht anders in der Aufgabenstellung):
-ansi -Wall -Werror -pedantic -D_POSIX_SOURCE
- // ist kein Ansi C Kommentar. /* und */ verwenden
- noetige includes finden sich in den Manpages zur jeweiligen Funktion ganz am Anfang
- die Funktion perror wertet die globale Variable errno aus und erzeugt eine passende Fehlermeldung. Was ihr perror im Argument uebergebt sollte euch dazu dienen die Stelle im Programm zu lokalisieren
- bitte nach allen,allen allen ALLEN Aufrufen von Bibliotheks oder Systemfunktionen eine Fehlerbehandlung durchfuehren. Ich hoffe es ist jetzt ruebergekommen dass nach allen Aufrufen externen Funktionen eine Fehlerbehandlung gewuenscht ist.
- perror gibt eine Fehlermeldung aus und nichts anderes. Danach laeuft das Programm weiter. Soll das Programm beendet werden muss die Funktion exit aufgerufen werden!
- Bitte Name, Login, Studiengang ALLER Bearbeiter als Kommentar an den Beginn jeder Quelldatei
- der NULL-Wert fuer Pointer ist in stdlib.h definiert. Er braucht nicht selber definiert werden
- Wenn in einer Funktion ein return|exit auftritt wird der Code danach nicht mehr ausgefuehrt. Insbesondere koennt ihr bei Fehlerbehandlungen tiefgeschachtelte if-else Konstrukte vermeiden wenn ihr ein
if (Fehler) { perror(); exit(EXIT_FAILURE); }
zur Fehlerbehandlung macht und danach normal und nicht in einem else Block weiterprogrammiert. Der Code wird dann nur ausgefuehrt falls Fehler false war.
-
Zur Ausgabe von Fehlern dient der stderr Kanal, nicht stdout. Also zur Fehlerausgabe fprintf(stderr, ,) oder perror und nicht etwa printf verwenden
-
ist ein Programmende in Reichweite ist ein freigeben von belegtem Speicher nicht noetig. Aller belegter Speicher wird bei Ende des Programms ohnehin vom System freigegeben. Speicher muss nur dann freigegeben werden wenn das Programm noch auf unbestimmte Zeit weiterlaeuft.