• Keine Ergebnisse gefunden

1 Aufgabe 1: Programmieren einer Ringliste

N/A
N/A
Protected

Academic year: 2021

Aktie "1 Aufgabe 1: Programmieren einer Ringliste"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktikum zur Vorlesung

GRUNDLAGEN DERINFORMATIKI Studiengang Elektrotechnik

WS 02/03

AG Betriebssysteme FB3 Kirsten Berkenkötter Ausgabe: 7.1./14.1.2003

Praktikum 5: Das Josephus-Spiel (Ringliste)

Im Jahre 67. n. Chr. wurde die galiläische Stadt Jotapata - unter Führung des jüdischen Histo- rikers Josephus (37-100) ein Zentrum des antirömischen Widerstands - nach 47tägiger Belage- rung von Truppen des römischen Kaisers Vespasian eingenommen. Josephus und 40 Soldaten zogen sich in eine Zisterne zurück. Um der Sklaverei zu entkommen, wollten die Soldaten sich selbst umbringen. Josephus beschwor sie vergebens, davon abzulassen. Um wenigstens seinen Freund und sich zu retten, schlug Josephus als Tötungsritual den alten römischen Brauch der decimatio (Aussonderung jedes Zehnten) vor. An welcher Stelle des Kreises stellte er seinen Freund und sich, um zu überleben?

(aus Helmut Harold, C Kompaktreferenz, Addison-Wesley 1999)

1 Aufgabe 1: Programmieren einer Ringliste

Um das Josephus-Spiel zu simulieren, soll eine Ringliste programmiert werden, das heißt eine Liste, deren letzes Element stets auf das erste zeigt.

Die Datenelemente der Liste sollen aus einer Struktur bestehen, die jeweils eine fortlaufende Nummer, einen Namen und dem Zeiger auf das nächste Listenelement enthält.

Eine Funktion anlegensoll dazu dienen, eine Liste anzulegen. Dabei werden die Anzahl der Listenelemente, d.h. der Personen im Kreis, sowie ein Zeiger auf die Liste als Parameter über- geben:

struct person_t* anlegen(int anzahl, struct person_t *liste)

In dieser Funktion wird die Liste erzeugt, d.h. es werden der Anzahl entsprechend Listen- elemente angelegt und verkettet. Für jedes Element soll mit scanf ein Name für die jeweilige Person im Kreis eingelesen werden. Zurückgegeben wird ein Zeiger auf die Liste.

Eine weitere Funktionausgebensoll dafür verantwortlich sein, die Liste auszugeben, d.h. vom ersten bis zum letzten Element Nummer und Name auszugeben. Der Anfang der Liste wird als Parameter übergeben:

void ausgeben(struct person_t *liste)

Zu guter Letzt soll eine Funktionauszaehlen das Auszähler der Personen übernehmen. Sie be- kommt als Parameter eine Zahl übergeben, die angibt wie ausgezählt wird (also z.B. 10 für jeden 10ten) und natürlich auch einen Zeiger auf die Liste:

void auszaehlen(int n, struct person_t *liste)

Die Funktion zählt solange aus, bis nur noch einer übrig ist. In jedem Schritt wird ausgeben, wer (Nummer und Name) ausgezählt wurde.

Im Hauptprogramm soll ein Zeiger als Anfang der Liste deklariert werden. Die Anzahl der Personen im Kreis wird mit scanf eingelesen und dann dementsprechend eine Liste erzeugt.

Diese soll ausgebeben werden. Außerdem wird mitscanf eingelesen, die jeweils wievielte Per- son ausgezählt werden soll. Damit kann das auszählen beginnen.

Referenzen

ÄHNLICHE DOKUMENTE

Affolter Daniel Stv. Leiter Beschaffung und Logistik.. Balzer Caroline HR

Punkte Sie können für die Aufgaben dieser Woche jeweils zwischen 0 und 2 Punkten bekommen.. Insgesamt also zwischen 0 und

struct dolili *elem_ptr = NULL; // Erzeugen eines Zeigers auf ein Element der Liste Damit Sie dynamisch neue Elemente einer Liste hinzufügen können, müssen Sie einen Teil des

Als Fortzug über die Kreisgrenze gilt, wenn jemand innerhalb des Bundesgebiets umzieht und dieser Umzug in dem Kreis, in dem er sich anmeldet, als Zuzug gilt oder wenn sich jemand aus

Als Fortzug über die Kreisgrenze gilt, wenn jemand innerhalb des Bundesgebiets umzieht und dieser Umzug in dem Kreis, in dem er sich anmeldet, als Zuzug gilt oder wenn sich jemand aus

[r]

• Geben Sie am Ende der Übung alle Blätter zusammen mit den Aufgabenblättern ab... a) Sortieren Sie das folgende Array mithilfe von Mergesort. Geben Sie dazu das Array nach jeder

(Bedingte Wahrscheinlichkeit) è Gesucht ist der Anteil der erkrankten in der Menge der nicht geimpften è 100% entsprechen den Nicht geimpften: 76 Personen?. è Davon sind