Programme für die Eingabeaufforderung:
1. Aufgabe
Sie arbeiten für ein Unternehmen, das mit Grundstücken handelt. Erstellen Sie ein Programm, das
◦ die Länge und Breite eines Grundstücks in Metern einliest,
◦ den Preis pro Quadratmeter einliest,
◦ den Preis des Grundstücks berechnet und auf dem Bildschirm ausgibt. Schlagen Sie auf den Preis des Grundstücks 5 % Provision auf.
Schlagen Sie auf den Preis mit der Provision 19 % Mehrwertsteuer auf. Geben Sie diese beiden Preise ebenfalls auf dem Bildschirm aus.
Benutzen Sie für die Aufschläge symbolische Konstanten.
2. Aufgabe
Schreiben Sie ein Programm, das zwei Zahlen einliest.
Stellen Sie sicher, dass die eine Zahl größer ist als die andere Zahl. Lassen Sie dazu gegebenenfalls die Eingabe wiederholen. Erstellen Sie dann eine Schleife, die von der kleineren Zahl bis zur größeren Zahl durchläuft und die Anzahl der Durchläufe er- mittelt.
Hinweis:
Die Reihenfolge der Eingabe soll beliebig sein. Es kann also auch erst die größere Zahl eingegeben werden und dann die kleinere.
3. Aufgabe
Erstellen Sie ein Programm, das eine Zeichenkette einliest und dann die Anzahl der Vokale sowie die Anzahl der Konsonanten in der Zeichenkette ermittelt. Als Konso- nant dürfen dabei alle Zeichen gezählt werden, die kein Vokal sind – also zum Bei- spiel auch Zahlen und Sonderzeichen.
Berücksichtigen Sie bei der Ermittlung der Vokale und Konsonanten sowohl Groß- als auch Kleinbuchstaben.
Benutzen Sie für die Lösung dieser Aufgabe eine switch-Konstruktion.
4. Aufgabe
Erstellen Sie ein Programm, das die Ziehung der Lottozahlen simuliert und das Ergebnis auf dem Bildschirm ausgibt.
Es darf keine Zahl doppelt verwendet werden!
Hinweise:
Eine Zufallszahl ermitteln Sie mit der Funktion rand(). Sie liefert Ihnen eine zufällige Zahlen im Bereich 0 bis RAND_MAX. Überlegen Sie sich eine geeignete Methode, um diese Werte auf den Bereich für die Lottozahlen zu beschränken.
Denken Sie daran: Die Zahl 0 gibt es beim Lotto nicht.
Damit die Zahlen wirklich „zufällig“ sind, müssen Sie den Zufallsgenerator ein- mal mit der Funktion srand(time(0)) initialisieren.
rand() und time() benötigen die Header-Dateien cstdlib und ctime.
Ein Tipp:
Um zu kontrollieren, ob Ihr Programm richtig arbeitet, lassen Sie zum Beispiel fünf zufällige unterschiedliche Zahlen aus dem Zahlenbereich 1 bis 5 ermitteln. Jede Zahl darf dabei nur einmal vorkommen.
5. Aufgabe
Erstellen Sie ein Programm, das die Höhe eines gleichschenkligen Dreiecks einliest und das Dreieck dann mit Sternchen auf dem Bildschirm ausgibt.
Ein Beispiel:
Wenn die Höhe 3 eingegeben wird, sollte die Ausgabe so aussehen:
*
* * *
* * * * *
Programme mit grafischen Benutzeroberflächen:
6. Aufgabe
Setzen Sie das Programm zur Berechnung der Grundstückspreise aus der Aufgabe 1 in ein Programm mit grafischer Oberfläche um.
Hinweise:
Denken Sie daran, dass Werte aus Eingabefeldern als Text geliefert werden. Sie müssen den Wert erst in ein numerisches Format konvertieren, bevor Sie mit ihm rechnen können.
Bei der Ausgabe müssen Sie ebenfalls passende Konvertierungen vornehmen.
7. Aufgabe
Erstellen Sie ein „Spiel“, bei dem der Anwender eine Schaltfläche in einem Formular
„fangen“ muss. Die Schaltfläche soll regelmäßig ihre Position im Formular wechseln. Lassen Sie dazu eine zufällige Position ermitteln, an der Sie die Schaltfläche ein- blenden.
Denken Sie bitte daran, dass die Position der Schaltfläche so gesetzt werden muss, dass die Schaltfläche immer vollständig im Formular zu sehen ist. Wie groß Sie das Formular selbst machen, ist Ihnen freigestellt.
Damit der Anwender eine Chance hat, die Schaltfläche zu „fangen“, soll sie mindes- tens eine Sekunde lang angezeigt werden. Die Schaltfläche gilt als gefangen, wenn der Anwender sie anklicken konnte.
Das Spiel soll maximal zwei Minuten dauern.
Blenden Sie in dem Formular am unteren Rand eine Anzeige der aktuellen Treffer und auch die verbleibende Zeit in Sekunden ein.
Nach 10 Treffern oder nach Ablauf der Spielzeit soll das Spiel beendet werden. Wenn der Anwender 10 Treffer erzielt hat, blenden Sie am Ende des Spiels einen Dialog ein, in dem eine Meldung wie „Herzlichen Glückwunsch“ steht. Wenn der Anwen- der in den zwei Minuten keine 10 Treffer erzielt hat, gilt das Spiel als verloren. Las- sen Sie dann eine Meldung wie „Sie haben leider verloren“ anzeigen.
In beiden Fällen soll das Programm beendet werden, wenn der Anwender den Dialog schließt.
Hinweise:
Eine Zufallszahl für die Positionierung können Sie auch hier mit der Funktion
rand() ermitteln.
Für die Steuerung des zeitlichen Ablaufs können Sie einen Timer der Klasse QTimer verwenden. Er verfügt über ein Signal timeout(), das in einem festen Intervall ausgelöst wird. Das Intervall setzen Sie beim Aufruf mit der Methode start() in Millisekunden. Um einen Timer anzuhalten, verwenden Sie die Methode stop().
Den Dialog am Ende des Spiels können Sie mit der Klasse QMessageBox erzeugen. Sehen Sie gegebenenfalls noch einmal in der Hilfe nach, welche Angaben Sie in wel- cher Form übergeben müssen.
8. Aufgabe
Erstellen Sie ein Programm, das einen Würfel simulieren kann. Lassen Sie die ge- würfelte Zahl grafisch darstellen. Bilder für die Darstellung finden Sie im heftbezo- genen Download-Bereich Ihrer Online-Lernplattform. Kopieren Sie diese Bilder bitte auf Ihren Rechner.
Ermitteln Sie die Wahrscheinlichkeiten, wie oft eine bestimmte Zahl gewürfelt wird. Geben Sie Sie dazu die Anzahl der Wiederholungen in festen Schritten vor – zum Beispiel 1 000, 10 000, 100 000, 1 000 000 und 2 000 000.
Lassen Sie die Anzahl der „Treffer“ pro Zahl absolut und prozentual anzeigen.
Hinweise:
Damit der Anwender sieht, wie gewürfelt wird, können Sie die Anzeige der Wid- gets regelmäßig aktualisieren lassen. Dazu können Sie zum Beispiel die Methode repaint() benutzen. Wenn Sie diese Methode sehr oft sehr schnell hinterein- ander anwenden, kann es allerdings passieren, dass scheinbar keine Wirkung mehr eintritt beziehungsweise die Anwendung sich nicht mehr meldet. Verwen- den Sie dann die Anweisung QApplication::processEvents(). Sie können sie zum Beispiel bei jedem 100. Durchlauf ausführen lassen.
Die Bilder können Sie über ein Label mit der Größe 77 * 77 anzeigen lassen. Er- stellen Sie dazu eine Instanz der Klasse QPixmap und laden Sie das Bild über die Methode load(). Geben Sie dabei den Pfad des Bildes als Zeichenkette an. Mit der Methode setPixmap() können Sie das Bild dann auf dem Label anzei- gen lassen.
9. Aufgabe
Erstellen Sie ein Programm, das dezimale Zahlen in das Dualsystem umrechnen kann und umgekehrt.
Für die Umrechnung einer dezimalen Zahl in eine Dualzahl können Sie zum Beispiel fortlaufend durch 2 dividieren. Der Rest der Division liefert die duale Ziffer. Das Er- gebnis muss allerdings von hinten nach vorne gelesen werden.
Für die Umrechnung einer Dualzahl in eine dezimale Zahl addieren Sie die einzelnen Stellenwerte. Sie werden durch Potenzen der Zahl 2 dargestellt. Für die Berechnung der Potenzen können Sie die Funktion pow() aus cmath verwenden.
Hinweise:
Das Problem der Umrechnung von Dualzahlen in dezimale Zahlen lässt sich auch sehr einfach mit den Methoden number() und toInt() der Klasse QString lösen. Sehen Sie dazu die verschiedenen Überladungen der Methoden in Ruhe an.