Systempraktikum – Eignungsfeststellung

Makefile ist immer gegeben. Die Funktionsnamen und auch die Beispielwerte in fileIO.conf oder in den Linked-List-Elementen können variieren.


Aufgabe 1 (1 Punkt)

Gegeben:

  • main.c enthält eine leere main()-Funktion.
  • <math.h> ist inkludiert.

Aufgabe:
Vervollständige die Funktion main():

  • Lies den ersten Kommandozeilenparameter ein.
  • Prüfe, ob dieser Parameter eine Zahl zwischen 2 und 10000 darstellt.
    • Falls nicht: darf main() undefiniert beendet werden.
    • Falls ja: Gib "1\n" auf der Kommandozeile aus, wenn die Zahl eine Primzahl ist, und "0\n" falls nicht.

Aufgabe 2 (2 Punkte)

Gegeben:

  • Eine Datei fileIO.conf, die ungefähr folgenden Inhalt hat:

    a = 15
    b = 13
    
  • fileIO.c enthält die Funktions-Signatur:

    void getAB(int *a, int *b) { }
  • main.c deklariert zwei int-Variablen, a und b, ruft getAB(&a, &b) auf und druckt anschließend a und b auf der Kommandozeile.

  • fileIO.h enthält einige #include <…>-Anweisungen, die Signatur von getAB und verlinkt fileIO.c und main.c.
    Hinweis: Man kann sich darauf verlassen, dass fileIO.conf genau jeweils einmal a und b enthält und dass nach dem '=' ein int folgt.

Aufgabe:
Vervollständige die Funktion getAB(), indem du die Datei fileIO.conf einliest und die Werte für a und b gemäß der Datei setzt.


Aufgabe 3 (2 Punkte)

Gegeben:

  • sll.c enthält die Funktions-Signatur:

    void add_Element(struct node *list, int x)
  • main.c erstellt eine verkettete Liste (Linked List) mit einigen Elementen, führt dann add_Element(&first_node, 7) aus und druckt die Werte des x-Feldes der einzelnen Listenelemente auf der Kommandozeile aus (z. B. "4->3->48->7" für eine Liste mit ursprünglich drei Nodes und den entsprechenden Werten: 4, 3, 48).

  • sll.h enthält die Definition des Structs:

    struct node {
        int x;
        struct node *next;
    };

    und verlinkt sll.c und main.c.
    Hinweis: Beim letzten Element muss next == NULL sein.

Aufgabe:
Vervollständige die Funktion add_Element(struct node *list, int x), sodass ein neues Node am Ende der Liste angehängt wird, das den Wert x enthält.


Aufgabe 4 (1 Punkt)

Gegeben:

  • pipe.c enthält die leere Signatur einer Funktion:

    int creat_und_write(FILE *fd, char *string)
  • main.c erstellt einen Array int fd[2], der die Deskriptoren der Pipe enthalten soll. Anschließend wird creat_und_write(fd, "Hallo Welt\0") aufgerufen und danach ein fork() durchgeführt.
    Im Kindprozess wird dann aus der Pipe gelesen und das Gelesene auf der Kommandozeile ausgegeben.

  • pipe.h verlinkt pipe.c und main.c und enthält den Hinweis, dass man sich darauf verlassen kann, dass der gegebene String \0-terminiert ist.

Aufgabe:
Vervollständige die Funktion creat_und_write(FILE *fd, char *string) so, dass:

  • Eine Pipe angelegt wird.
  • Der String in die Pipe geschrieben wird.
  • Die Anzahl der geschriebenen Zeichen zurückgegeben wird.
×

MyUniNotes is a free, non-profit project to make education accessible for everyone. If it has helped you, consider giving back! Even a small donation makes a difference.

These are my personal notes. While I strive for accuracy, I’m still a student myself. Thanks for being part of this journey!