![]() |
![]() |
C++ - Übung zu Datenfelder (2) |
G.Eichelsdörfer - Staatliche Technikerschule Weilburg |
Um in ein Datenfeld ein Element einfügen zu können,
müssen Elemente dieses Datenfeldes verschoben werden.
Beispiel:
Ausgangsdatenfeld: 12.0 9.1 25.2 7.3 14.4 5.5
Es soll Platz für eine einzufügende Zahl an der dritten Stelle geschaffen werden.
Es sind somit alle Zahlen ab der dritten Stelle um eine Position nach hinten zu versetzen.
Ergebnisdatenfeld: 12.0 9.1 25.2 25.2 7.3 14.4 5.5
Die frei gewordene Stelle ist unterstrichen. Dort steht noch der alte Wert (25.2).
Erstellen Sie eine Funktion verschieben(), die alle Zahlen ab einer bestimmten Stelle um eine
Position nach hinten kopiert! Achten Sie darauf, dass dabei keine Zahlen verloren gehen!
Projekt: verschiebe1
Erstellen Sie eine Funktion einfuegen(), welche in einem Datenfeld eine Zahl an einer
bestimmten Position einfügt! Verwenden Sie die zuvor erstellte Funktion verschieben()!
Projekt: einfuegen
Die Zahlen eines Datenfeldes sollen der Größe nach sortiert werden - die kleinste Zahl zuerst.
Erstellen Sie dazu eine Funktion sortieren()! Prinzipiell ist Ihnen das Sortierverfahren selbst überlassen.
Projekt: sortieren
Hierzue empfehle ich zunächst den einfachen Algorithmus "Bubblesort".
Ergänzend mögen Sie auch das folgende einfache Verfahren einmal in C++ umsetzen:
Suche das kleinste Element und vertausche es mit dem ersten Element des Datenfeldes.
Danach verwende das restliche Datenfeld ab dem zweiten Element und tue das Gleiche.
Danach verwende das restliche Datenfeld ab dem dritten Element und tue das Gleiche.
Fahre so fort, bis nur noch ein Element übrig ist.
Erstellen Sie hierzu eine Hilfsfunktion minimum(), die den Index des kleinsten Elementes eines (Rest-)Datenfeldes liefert!
Bedenken Sie, dass hier nicht Sortierverfahren sondern Verarbeitung von Datenfeldern das Thema ist und steigen Sie nicht zu sehr in Sortierverfahren ein. Es gibt übrigens in der Standardbibliothek fertige Sortierfunktionen.
Ein kleines Spiel:
Ein Anwender gibt einen Satz aus maximal 20 Wörtern ein.
Er schließt die Eingabe mit einem Punkt (als Wort) ab.
Nun werden die Wörter mit Ausnahme des Punktes zufällig vertauscht.
Etwa 40 Vertauschungen sollten genügen.
Zum Schluss wird der so verwürfelte Satz ausgegeben.
Nun mag ein Mitspieler versuchen, den eingegebenen Satz zu erraten.
Erstellen Sie die folgenden Funktionen:
Das Datenfeld aus std::string-Elementen soll von der main-Funktion zur Verfügung gestellt werden.
Projekt: satzmischen