Vertiefung Programmieraufgaben

Bsp 1. Sequentielle Suche in einer Liste

Erstelle ein Programm, das in der Lage ist in einer Zufallsfolge einen Wert zu suchen.
Dazu soll eine Zufallsfolge von 10 Zahlen in einem (vom Benutzer) vorgegebenen Bereich erzeugt werden. Anschließend wird der Benutzer nach einer Zahl gefragt.
a) Anschließend wird untersucht, ob und wie oft diese Zahl auftritt.
b) Es soll ausgegeben werden an welcher/welchen Stelle/Stellen die Zahl auftritt.

Bsp 2. Tausch in Zufallsfolge

Schreibe ein Programm, das es erlaubt, in einer Zufallsfolge von Zahlen zwei beliebige Elemente zu vertauschen.

Der Benutzer soll dabei aufgefordert werden, anzugeben, welche Stellen getauscht werden sollen.

Z.B.: Zufallsfolge 3 12 4 17 8 11 13 5 16 19
Tauschen 1. Stelle: 2
Tauschen 2. Stelle: 10
Zufallsfolge neu 3 19 4 17 8 11 13 5 16 12

Bsp 3. Matrix transponieren

Schreibe ein Programm, das eine 5×5-Matrix transponiert, das heißt entlang der Hauptdiagonale spiegelt.

Bsp 4. Magisches Quadrat Erweiterung

Erweitere das Programm „Magisches Quadrat“ um die Funktion
a) spiegelnhorzontal(quadrat q): 1. und 3. Zeile wird gespiegelt
b) spiegelnvertikal(quadrat q): 1. und 3. Spalte wird gespiegelt
Zeige mit deinem Programm, dass nach Anwendung der beiden Funktionen wieder ein Zauberquadrat vorliegt, wenn vorher eines vorgelegen hat.

Bsp 5. Schach

Schreibe eine Programm (schach.cpp), das es erlaubt eine beliebige Figur auf einen beliebige Position eines Schachbretts zu positionieren.
Gehe dabei von einem 8×8 Zeichen(Char)-Array aus. Die Positionen, die nicht besetzt sind, sollen mit dem Zeichen 'o' angezeigt werden.
Geforderte Funktionen:
a) initialisieren(feld f): alle 64 Positionen werden mit dem Zeichen 'o' belegt
b) anzeigen(feld f): das gesamt Feld f wird ausgegeben
c) positionieren(feld f, char figur, int r, int s): das zeichen figur (z.B. T für Turm) wird auf die position rs gestellt.

Bsp 6. Binomialkoeffizient

Erstelle ein Programm, dass den Binomialkoeffizienten „n über k“ berechnet.

(n über k) = (n*(n-1)*(n-2)*….*(n-k+1))/(k*(k-1)*(k-2)*…*3*2*1)

Das Programm soll mittels einer Funktion binomialkoeff() realisiert werden:
Die Funktion binomialkoeff() wird mit den beiden Eingabeparametern n und k vom Typ int aufgerufen und liefert selbst das Ergebnis double. Die Ein- und Ausgabe des Binomialkoeffizienten muss im Hauptprogramm erfolgen.

Hinweis: für die Ausgabe: cout.precision(20); ermöglicht eine ganzzahlige Ausgabe (hier: 20 Stellen).
Beispiel zum Testen: Anzahl der Möglichkeiten 6 aus 45 Kugeln zu ziehen:
(45 über 6 ) = 8145060

Turbo CPP Skriptum

Die folgenden Beispiele sind aus dem Kapitel 2 des Turbo-CPP-Skriptums übernommen. Arbeite vor Erledigung der Aufgaben die jeweiligen Teile dieses Kapitels durch:
bcpp2.pdf

Bsp 7. Memo + ListBox (Aufgabe 2.5)

Schreiben Sie ein Programm mit einem Memo, einer ListBox, einer ComboBox, einem Edit-Fenster, zwei Buttons und zwei Labels:


Bsp 8. Ereignisse (Aufgabe 2.6)

Schreiben Sie ein Programm, das etwa folgendermaßen aussieht:


a) Wenn für den „Test“-Button eines der Ereignisse OnClick, OnEnter usw. eintritt, soll ein Text in das zugehörige Edit-Fenster geschrieben werden. Für die Ereignisse, für die hier keine weiteren Anforderungen gestellt werden, reicht ein einfacher Text, der das Ereignis identifiziert (z.B. „OnClick“).
Bei den Key-Ereignissen soll der Wert des Parameters Key angezeigt werden.
Beachten Sie dabei, dass dieser Parameter bei der Funktion

void __fastcall TForm1::Button1KeyPress(TObject *Sender, char &Key)

den Datentyp char hat und der Eigenschaft Text des Edit-Fensters direkt zugewiesen werden kann, während er bei den Funktionen KeyDown und KeyUp den Datentyp WORD hat:

void __fastcall TForm1::Button1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift)''

Dieser Datentyp kann mit IntToStr in einen String umgewandelt und dann der Eigenschaft Text des Edit-Fensters zugewiesen werden.
Beim Ereignis MouseMove sollen die Mauskoordinaten angezeigt werden, die als Parameter X und Y übergeben werden. Diese können mit IntToStr in einen String umgewandelt und mit + zu einem String zusammengefügt werden. AlsTrennzeichen soll dazwischen noch mit + ein String „,“ eingefügt werden.

b) Mit dem Button Clear sollen alle Anzeigen gelöscht werden können.
c) Beobachten Sie, welche Ereignisse eintreten, wenn der Test-Button

d) Die Tabulatorreihenfolge der Edit-Fenster soll ihrer Reihenfolge auf dem Formular entsprechen (zuerst links von oben nach unten, dann rechts).
e) Der Text der Titelzeile „Events“ des Formulars soll im Konstruktor des Formulars zugewiesen werden.
f) Der „Jump“-Button soll immer an eine andere Position springen (z.B. an die gegenüberliegende Seite des Formulars), wenn er vom Mauszeiger berührt wird. Dazu ist keine if-Anweisung notwendig. Falls er angeklickt wird, soll seine Aufschrift auf „getroffen“ geändert werden.

Bsp 9. CheckBoxen - Radiobuttons (Aufgabe 2.7)

Schreiben Sie ein Programm mit drei CheckBoxen, drei RadioButtons und zwei gewöhnlichen Buttons:


Beim Anklicken des Buttons Test sollen in Abhängigkeit von den Markierungen der CheckBoxen und der RadioButtons folgende Aktionen stattfinden:
a) Die Markierung der CheckBox enable/disable soll entscheiden, ob bei der zweiten CheckBox, dem ersten RadioButton sowie bei Button1 die Eigenschaft Enabled auf true oder false gesetzt wird.
b) Die Markierung der CheckBox Aufschrift soll entscheiden, welchen von zwei beliebigen Texten Button1 als Aufschrift erhält.
c) Die Markierung der CheckBox show/hide soll entscheiden, ob Button1 angezeigt wird oder nicht.
d) Die Markierung der RadioButtons soll die Hintergrundfarbe der ersten Check- Box festlegen.
e) Beim Anklicken des ersten RadioButtons soll die Hintergrundfarbe der ersten CheckBox auf rot gesetzt werden.

Bsp 10. Registerkarten (Aufgabe 2.8)

Ein Formular soll ein PageControl mit drei Registerkarten enthalten, das das ganze Formular ausfüllt. Die Registerkarten sollen den einzelnen Teilaufgaben dieser Aufgabe entsprechen und die Aufschriften „a)“, „b)“ und „c)“ haben.


a) Die Seite „a)“ soll zwei Gruppen von sich gegenseitig ausschließenden Optionen enthalten.
Die Buttons OK, Hilfe und Abbruch zu einer Gruppe zusammengefasst werden, die optisch nicht erkennbar ist.
Reaktionen auf das Anklicken der Buttons brauchen nicht definiert werden.
b) Die Seite „b)“ soll nur einen Button enthalten.
c) Die Seite „c)“ soll leer sein.
d) Verwenden Sie die Struktur-Anzeige, um einen Button von Seite „b)“ auf Seite „c)“ zu verschieben.

Bsp 11. Menü (Aufgabe 2.10)

Schreiben Sie ein Programm mit einem Hauptmenü, das die unten aufgeführten Optionen enthält. Falls die geforderten Anweisungen bisher nicht vorgestellt wurden, informieren Sie sich in der Online-Hilfe darüber (z.B. SelectAll). Das Formular soll außerdem ein Memo enthalten, das den gesamten Client-Bereich des Formulars ausfüllt (Eigenschaft Align=alClient).