====== 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 5x5-Matrix transponiert, das heißt entlang der Hauptdiagonale spiegelt.
* Der Benutzer gibt Zahlen in die Matrix ein.
* Die Matrix wird mittels einer Funktion ausgegeben.
* Die Matrix wird mittels einer Funktion transponiert.
* Die Matrix wird nochmals ausgegeben.
{{:inf:inf6bi_201314:matrix.gif?200|}}{{:inf:inf6bi_201314:transponierte.gif?200|}}
===== 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 8x8 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:\\
{{:inf:inf6bi_201314: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:\\
{{:inf:inf6bi_201314:bsp7.jpg?200|}}\\
* Beim Anklicken von Button1 soll der aktuelle Text des Edit-Fensters als neue Zeile zu jeder der drei TStrings-Listen hinzugefügt werden.
* Wenn ein ListBox-Eintrag angeklickt wird, soll er auf Label1 angezeigt werden.
* Beim Anklicken von Button2 soll der in der ComboBox ausgewählte Text auf dem Label2 angezeigt werden.
===== Bsp 8. Ereignisse (Aufgabe 2.6) =====
Schreiben Sie ein Programm, das etwa folgendermaßen aussieht:\\
{{:inf:inf6bi_201314:bsp8.jpg?200|}}\\
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
* angeklickt wird
* den Fokus hat und eine Taste auf der Tastatur gedrückt wird
* den Fokus hat und eine Funktionstaste (z.B. F1, Strg, Alt) gedrückt wird
* mit der Tab-Taste den Fokus bekommt.
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:
{{:inf:inf6bi_201314:bsp9.jpg?200|}}\\
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.
{{:inf:inf6bi_201314:bsp10.jpg?200|}}\\
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).
* Datei|Öffnen: Falls ein Dateiname ausgewählt wird, soll diese Datei mit der Methode LoadFromFile in das Memo eingelesen werden. In dem OpenDialog sollen nur die Dateien mit der Endung „.txt“ angezeigt werden.
* Datei|Speichern: Falls ein Dateiname ausgewählt wird, soll der Text aus dem Memo mit der Methode SaveToFile von Memo1->Lines unter diesem Namen gespeichert werden. Diese Option soll außerdem mit dem ShortCut „Strg+S“ verfügbar sein.
* Nach einem Trennstrich.
* Datei|Schließen: Beendet die Anwendung
* Bearbeiten|Suchen: Ein FindDialog ohne jede weitere Aktion.
* Bearbeiten|Suchen und Ersetzen: Ein ReplaceDialog ohne jede weitere Aktion.
* Nach einem Trennstrich:
* Bearbeiten|Alles Markieren: Ein Aufruf von Memo1->SelectAll.
* Bearbeiten|Ausschneiden: Ein Aufruf von Memo1->CutToClipboard.
* Bearbeiten|Kopieren: Ein Aufruf von Memo1->CopyToClipboard.
* Drucken|Drucken. Ein PrintDialog ohne weitere Aktion. Mit den bisher vorgestellten Sprachelementen ist es noch nicht möglich, den Inhalt des Memos auszudrucken.
*Drucken|Drucker einrichten: Ein PrinterSetupDialog ohne weitere Aktion.