Exercices pratiques résolus pendant une séance en ligne


Exercice 1 : Les Structures, fonctions, variables et pointeurs

Schreiben Sie ein Modul, welches einen Datentyp string implementiert. Ein String soll intern
als struct implementiert sein, der den String selbst sowie dessen aktuelle Länge speichert.
Implementieren Sie in diesem Modul Funktionen, welche Strings initialisieren, kopieren und
aneinanderhängen können sowie eine Funktion zum Ausdrucken eines Strings.
Die Strings sollen dynamisch verwaltet werden und Platz soll bei Bedarf von den String-
Funktionen allokiert und de-allokiert werden. Achten Sie darauf, dass niemals Platz verloren
geht und dass niemals Speicherzugriffsfehler passieren können! Überlegen Sie genau, wie Sie
den leeren String darstellen wollen und welchen Wert „len“ und „s“ dabei haben sollen!

Verwenden Sie folgende Typdefinitionen und Prototypen (für das Headerfile des string Moduls):

typedef struct {
int len; /* Anzahl Zeichen in s */
char *s; /* ein C-string mit abschließendem \0-Zeichen */
} string_t;

typedef string_t* string;
void set (string* s1, char *s); /* initialisiere s1 mit s */
void copy (string* s1, string s2); /* kopiere s2 nach s1 */
void concat (string* s1, string s2); /* hänge s2 an s1 an */
void print (string s1); /* drucke s1 aus */

  • Testen Sie Ihre Funktionen ausgiebig mit einem entsprechenden Hauptprogramm und fügen Sie dieses Test-Programm (Quelltext) später Ihrer Abgabe bei!
Voir le corrigé

Exercice 2 : Les Structures, fonctions, variables et pointeurs

Schreiben Sie nun ein neues Hauptprogramm, welches eine beliebige Anzahl von Worten von
der Tastatur einliest, in einer verketteten Liste speichert und die Worte in umgekehrter
Reihenfolge der Eingabe wieder ausgibt. Die Worte werden als strings (vom Typ string_t)
von Exercices 1 in Listenelementen vom Typ word_t (siehe unten) abgelegt und verkettet.

Hinweis: Verwenden Sie folgende Typdefinition:

typedef struct word_struct{
string word; /* das Wort */
struct word_struct *next; /* Zeiger auf Nachfolger */
} word_t;

  • Was müssen Sie in Ihrem Programm ändern, wenn es die Worte in der Reihenfolge der Eingabe ausgeben soll?
Voir le corrigé