Aufgaben zur UE
Einführung in die Programmierung
Legen Sie alle Programme so aus, dass der Benutzer die geforderten
Berechnungen beliebig oft durchführen kann, ohne das Programm jedes mal
neu zu starten.
Beim Einlesen von Zeichenketten können Sie davon ausgehen,
dass keine Leerzeichen in der Eingabe vorkommen. Der Operator >>
sieht ein Leerzeichen als Ende einer Eingabeoperation an. Sie können
auch annehmen, dass der Benutzer keine zu langen Zeichenketten eingibt,
die einen Pufferüberlauf provozieren könnten. Interessierte finden hier Methoden, wie auch Zeichenketten eingelesen werden können, die Leerzeichen enthalten und wie
ein Pufferüberlauf vermieden werden kann.
Anspruchsvollere Aufgaben sind mit einem Stern gekennzeichnet.
-
Felder, Exkurs: Hashing
Erstellen Sie C++ Programme für folgende Problemstellungen:
-
Lesen Sie beliebig viele (max. 50) Zahlen (Abschluss mit dem Wert 0)
ein, speichern Sie diese in einem Feld und geben Sie Mittelwert, Median
und die Standardabweichung der Zahlen aus. (Bei der Ermittlung der
Medians können Sie davon ausgehen, dass die Zahlen schon sortiert sind,
vom Benutzer also entweder
in aufsteigender oder in fallender Reihenfolge eingegeben werden.)
-
Bestimmen Sie alle Primzahlen bis zu einem gegebenen n mit Hilfe des Siebs des Eratosthenes.
- Schreiben Sie ein Programm, das zunächst eine Zeichenkette
(max. 80 Zeichen) einliest und dann immer wieder ein einzelnes Zeichen
einliest und die Zeichenkette ausgibt, die entsteht wenn man das
zuletzt eingegebene Zeichen aus der ursprünglichen Zeichenkette
entfernt. (Das Programm soll durch Eingabe eines ! beendet werden.)
z.B. Eingabe: Kranke Schwestern
Eingabe: K
Ausgabe: ranke Schwestern
Eingabe: e
Ausgabe: Krank Schwstrn
Eingabe: !
Programmende
-
Lesen Sie 2 2x2 Matrizen ein und geben Sie das Produkt der beiden
Matrizen aus. Legen Sie das Programm so aus, dass der Benutzer beliebig
viele Matrizenmultiplikationen ausführen kann, ohne das Programm
mehrmals zu starten. Verwenden Sie in Ihrem Programm zur Speicherung
der Matrizen maximal 3 Variable.
-
Lesen Sie maximal 50 Messpunkte (xi/yi)
ein und berechnen Sie die Koeffizienten a und b in der Gleichung der
Regressionsgeraden y=ax+b. Geben Sie außerdem den Punkt aus, dessen y
Koordinate am stärksten von der berechneten Regressionsgeraden
abweicht.
- Bei einer Wahl muss sichergestellt werden, dass jeder
Wahlberechtigte (es sind derer maximal 90) nur einmal seine Stimme
abgibt. Für diesen Zweck prüft man die Sozialversicherungsnummer und
merkt sich, wer schon gewählt hat.
Schreiben Sie ein Programm, das beliebig viele
Sozialversicherungsnummern einliest und eine Warnung ausgibt, sobald
eine Nummer zum zweiten Mal eingegeben wird.
Überlegen Sie, ob für diese Anforderungen der Einsatz einer
Hash-Tabelle angebracht ist und verwenden Sie gegebenenfalls eine
Hash-Tabelle mit linear probing
-
Schreiben Sie ein Programm, das Tipps im Lotto 6 aus 45 verwaltet.
Lesen Sie maximal 50 Tipps ein (ein Tipp besteht aus jeweils 6 Zahlen.
Beenden der Eingabe mit 0) und danach das Ziehungsergebnis (ebenfalls 6
Zahlen).
Geben Sie aus wieviele Sechser in den Tipps vorkommen.
Anmerkung: Gehen Sie der Einfachheit halber davon aus, daß die
einzelnen Zahlen in den Tipps und im Ziehungsergebnis aufsteigend
sortiert eingegeben werden.
- Lesen Sie maximal 50 Zahlen (Abschluß mit 0) in ein Feld F ein,
sowie einen Wert x. Teilen Sie den Inhalt des Feldes F so auf zwei
weitere Felder Fg und Fk auf, dass alle Werte, die größer als x sind, in Fg liegen und alle anderen in Fk.
Geben Sie dann abwechselnd je eine Zahl aus Fg und eine aus Fk aus, solange bis alle Zahlen ausgegeben sind.
z.B. Eingabe: 3 14 31 7 29 10 18 15 19 0 x=10
Fg enhält dann 14 31 29 18 15 19 und Fk 3 7 10
Ausgabe: 14 3 31 7 29 10 18 15 19
-
Lesen Sie maximal 50 Zeichenketten ein (jede Zeichenkette hat maximal
80 Zeichen, Abschluß durch Eingabe von "Stop") sowie einen Wert n.
Geben Sie dann alle Zeichenketten ein, die maximal n Zeichen lang sind.
Die Verwendung von Stringfunktionen (strlen etc.) ist nicht gestattet.
Anmerkung: Beachten Sie, dass beim Einlesen eine Zeichenkette durch ein Leerzeichen beendet wird.
z.B. Eingabe: C++ ist ganz schön kompliziert so im Allgemeinen Stop n=4
Ausgabe: C++ ist ganz so im
-
Schreiben Sie ein Programm zur Ermittlung des zu entrichtenden
Steuerbetrags aus dem Gewinn unter Berücksichtigung der
Steuerprogression. Verwenden Sie ein Feld, das mit den entsprechenden
Bereichsgrenzen initialisiert wird, sowie ein zweites Feld, das mit den
zugehörigen Steuersätzen initialisiert wird.
Die aktuellen Werte für Österreich können Sie aus der Tabelle entnehmen
und im Programm als Konstante vorgeben (Die Tabelle muss also nicht
eingelesen
werden.) Das Programm soll einen Gewinnbetrag einlesen und die
entsprechende Steuer berechnen und ausgeben.
von
|
bis
|
Prozentsatz
|
0
|
3640
|
0
|
3640.01
|
7270
|
21
|
7270.01
|
21800
|
31
|
21800.01
|
50870
|
41
|
50870.01
|
|
50
|
- Lesen Sie eine Zeichenkette ein und geben Sie, je nach
Benutzerwunsch eine kodierte, bzw. dekodierte Version der Eingabe aus.
Verwenden Sie dazu eine einfache Cäsar-Kodierung.
z.B. Eingabe (kodieren): Test
Ausgabe: Uftu
-
Bei einem Schiwettkampf mit maximal 30 Teilnehmern werden die
erreichten Zeiten im Format min:sec:tausendstel eingegeben. Schreiben
Sie ein Programm, das
die Anzahl der Teilnehmer und die erreichten Zeiten einliest. Danach
soll die Bestzeit ermittelt werden. Ausgegeben wird die Startnummer des
Siegers, die
Bestzeit, sowie eine Tabelle aller Teilnehmer in der die Zeitdifferenz
zum Sieger angeführt wird. Diese Tabelle wird nach Startnummern
sortiert ausgegeben,
also nicht nach erreichter Position.
z.B.: Eingabe:
5
1:10:22
1:5:22
1:7:40
1:8:27
1:6:23
Ausgabe:
Sieger ist die Startnummer 2 mit 1:5:22
1 5
2 0
3 2.18
4 3.05
5 1.01
- *
Schreiben Sie eine einfache Version des Tic-Tac-Toe Spiels. Dabei
spielt der Benutzer gegen den Computer. Nach jedem Zug soll der
aktuelle Zustand des Spielbretts am Bildschirm ausgegeben werden.
(Der Computer muss sich dabei nicht besonders schlau anstellen. Es
genügt, wenn er einfach irgendeines der freien Felder besetzt, sobald
er am Zug ist. Es muss auch nicht automatisch erkannt werden, wenn die
Partie zu Ende ist.)
- *
Lesen Sie eine Zeichenkette ein und geben Sie aus, welche Zeichen wie oft in der Eingabe vorkommen.
z.B. Eingabe: achtung, test
Ausgabe: ,(1) a(1) c(1) e(1) g(1) h(1) n(1) s(1) t(3) u(1)
- *
Schreiben Sie ein Programm, das eine Zeichenkette (max. 80 Zeichen, nur Kleinbuchstaben) einliest
und das erste Zeichen der
ursprünglichen Zeichenkette alphabetisch korrekt einsortiert. Das heißt im Ergebnis sollen zunächst alle
Zeichen, die kleiner als das ursprünglich erste Zeichen sind, dann dieses erste Zeichen und schließlich
die Zeichen, die größer als das ursprünglich erste Zeichen sind auftreten.
z.B. Eingabe: keinblasserschimmer
Ausgabe: eibaechieknlssrsmmr