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 Pkt.
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 ermittelt.
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 Konsonant dürfen dabei alle Zeichen gezählt werden, die kein Vokal sind – also zum Beispiel 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.
5 Pkt.
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 einmal 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.
15 Pkt.
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:
5 Pkt.
*
***
*****
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.
10 Pk
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 einblenden.
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 mindestens 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 Anwender in den zwei Minuten keine 10 Treffer erzielt hat, gilt das Spiel als verloren. Lassen 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().
© Fernstudienzentrum Hamburg
10
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 welcher Form übergeben müssen.
8. Aufgabe
Erstellen Sie ein Programm, das einen Würfel simulieren kann. Lassen Sie die gewürfelte Zahl grafisch darstellen. Bilder für die Darstellung finden Sie im heftbezogenen 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 1000, 10000, 100000, 1000000 und 2000000.
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 Widgets regelmäßig aktualisieren lassen. Dazu können Sie zum Beispiel die Methode
repaint() benutzen. Wenn Sie diese Methode sehr oft sehr schnell hintereinander anwenden, kann es allerdings passieren, dass scheinbar keine Wirkung
mehr eintritt beziehungsweise die Anwendung sich nicht mehr meldet. Verwenden 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. Erstellen 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 anzeigen lassen.
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 Ergebnis 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.
© Fernstudienzentrum Hamburg
11
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 Siedazudie verschiedenen Überladungen der Methoden
in Ruhe an