Aufgabe 1 - Zinseszins Schreibe ein Programm, das für eine

Werbung
Aufgabe 1 - Zinseszins
Schreibe ein Programm, das für eine Geldanlage Zinsen (inkl. Zinseszinsen)
berechnet. Die Zinsen sollen am Ende jeden Laufzeitjahres dem Kapital
zugeschlagen werden und in den Folgejahren zusammen mit dem Kapital verzinst
werden. Die folgenden Angaben sind einzulesen:
1. eingezahltes Kapital in Euro (mind. 100 Euro)
2. Zinssatz in %
3. Anlagedauer in Jahren
Die eingelesenen Werte sollen auf Gültigkeit geprüft werden. Bei korrekter
Eingabe soll eine Tabelle ähnlich wie in dem folgenden Beispiel ausgegeben
werden. Hier ist der Anlagebetrag 1000 Euro bei 3% Zinsen und einer Laufzeit von
3 Jahren:
Jahr
0
1
2
3
Zinsen
0.00
30.00
30.90
31.83
Guthaben
1000.00
1030.00
1060.90
1092.73
Aufgabe 2 - Felder umkehren (1)
Gegeben sei das Array 3, -55, 2, 97, -13, 2008. Schreibe ein Programm, welches
die Reihenfolge der Zahlen in dem Array umkehrt (2008, -13, 97, 2, -55, 3). Das
Feld soll vor und nach der Umkehrung mit Hilfe einer Schleife ausgegeben werden.
Aufgabe 3 - Felder umkehren (2)
Verändere das geschriebene Programm zum Umkehren von Feldern so, dass das
Umkehren des Arrays in einer Methode umkehr geschieht. Diese Methode soll das
ursprüngliche Array als Parameter erhalten und das veränderte Array zurückgeben.
In der main-Funktion soll nun das ursprüngliche Array ausgegeben werden, die
Methode umkehr aufgerufen werden und anschließend das veränderte Array
wieder ausgegeben werden.
Aufgabe 4 - Kleines 1x1
Schreibe ein Programm, welches das kleine Ein-Mal-Eins (bis 10 mal 10)
berechnet und in einer Matrix (einem zweidimensionalen Feld) speichert. Die
Matrix soll dann mit Hilfe von zwei Schleifen tabellarisch auf dem Bildschirm
ausgegeben werden. Um die Werte geeignet einzurücken kann \t verwendet
werden. Mit System.out.print(x) wird nach der Ausgabe von x keine neue Zeile
angefangen. Die Ausgabe sieht also etwa wie folgt aus:
1
2
3
4
5
6
7
8
9
10
2
4
6
8
10
12
14
16
18
20
3
6
9
12
15
18
21
24
27
30
4
8
12
16
20
24
28
32
36
40
5
10
15
20
25
30
35
40
45
50
6
12
18
24
30
36
42
48
54
60
7
14
21
28
35
42
49
56
63
70
8
16
24
32
40
48
56
64
72
80
9
18
27
36
45
54
63
72
81
90
10
20
30
40
50
60
70
80
90
100
Aufgabe 5 - binary search
Schreibe ein Programm, welches in einem sortierten Array nach einer eingelesenen
Zahl sucht und gebe die Position aus, auf der die Zahl gefunden werden konnte
oder eine Fehlermeldung, falls die Zahl nicht in dem Array enthalten ist. Das Feld
sei wie folgt definiert:
1, 3, 4, 7, 9, 13, 17, 18, 19, 23, 26, 30
Gesucht werden soll nach folgendem Algorithmus:
• beginne in der Mitte des Arrays bzw. bei gerader Feldanzahl bei dem linken der
mittleren Felder (einfache Integer-Division durch 2)
• vergleiche das Element an dieser Position mit dem Suchelement
• ist das Suchelement kleiner, als das Element dieser Position, so wähle als nächstes
Vergleichselement das Element, welches sich in der Mitte des Intervalls zwischen
der aktuellen Position und dem Anfang des Intervalls befindet
• ist das Suchelement größer, als das Element dieser Position, so setze die Suche
analog in der rechten Hälfte des Suchintervalls fort. Wiederhole die obigen Schritte
mehrfach, wobei sich das Suchintervall jeweils halbiert, bis das Intervall nur noch
eine Länge von 1 hat. Das aktuelle Element ist nun entweder die gesuchte Zahl,
oder das Suchelement ist nicht in dem Feld enthalten.
Aufgabe 6 - GGT
Entwickle eine Methode ggt(int x,int y), welche für zwei einzulesenden natürlichen
Zahlen den größten gemeinsamen Teiler (GGT) dieser Zahl mit Hilfe des von
Euklidischen Algorithmus berechnet. Dieser lautet wie folgt:
• Sind die beiden Zahlen gleich, so ist ihr Wert der gesuchte GGT, der Wert wird
ausgegeben und das Programm bricht ab.
• Sind die beiden Zahlen nicht gleich, wird der Wert der größeren Zahl um den
Wert der kleineren Zahl vermindert und wieder mit dem ersten Schritt begonnen.
In der main-Funktion soll die Methode mit verschiedenen Eingabewerten mehrfach
aufgerufen werden und jeweils der GGT ausgegeben werden.
Aufgabe 7 - Palindrom
Eine natürliche Zahl ist ein Palindrom, wenn die umgekehrte Reihenfolge ihrer
Dezimalziffern identisch zur Zahl ist: 121 und 881323188 sind zum Beispiel
Palindrome.
Schreibe ein Java-Programm, das eine Zahl einliest und in der Methode
boolean palindrom(int zahl) prüft, ob die Zahl ein Palindrom ist.
Tipp: Speichere die Zahl zunächst Ziffern-weise in einem Feld ab.
Aufgabe 8 - Potenz (1)
Schreibe eine Methode power, die zwei ganze Zahlen x und y (x, y  0) als
Parameter übergeben bekommt und die Potenz xy berechnet und zurückgibt. In
einer Schleife soll in der main-Funktion beliebig oft ein Zahlenpaar eingelesen
werden. Durch die Eingabe einer negativen Zahl kann die Schleife abgebrochen
werden.
Aufgabe 9 - Rekursion - Fakultät
Versuche für Aufgabe 9 von Übungsblatt 2 nun eine rekursive Lösung zu finden.
Noch einmal zur Information:
Rekursive Methoden rufen sich selbst wieder auf, wobei die eigentliche Aufgabe in
kleinere Teilaufgaben aufgesplittert wird. Eine Rekursion benötigt immer eine
Abbruchbedingung, d.h. ein Teilproblem, für das die Lösung bekannt ist.
Aufgabe 10 - Rekursion - Binomialkoeffizient
Schreibe ein Programm, welches rekursiv den Binomialkoeffizienten zweier ganzer
Zahlen ausrechnet. Zur Erinnerung hier die Definition des Binomialkoeffizienten:
n
n * (n  1)...(n  k  1)
n!
  

1 * 2... * k
 k  k!*(n  k )!
Als Eingabebeispiel kannst du n=49 und k=6 verwenden, womit die
Wahrscheinlichkeit berechnet wird im Lotto zu gewinnen:
 49 
   13983816
6 
Aufgabe 11 - Rekursion - Potenz (2)
Es ist möglich die Potenz an, a, n  IN  0 mit weniger als n−1 Multiplikationen
zu berechnen. Dazu überlegt man sich, dass man die Potenz schreiben kann als
n 1
 n1
a 2 * a 2 * a ,
n ungerade
n  n
n
a =
2
2
n gerade
a * a ,
Durch rekursives Anwenden dieser Zerlegung wird die Anzahl der
Multiplikationen reduziert.
Schreibe ein Programm, welches zwei Zahlen a und n einliest, auf Gültigkeit prüft
und mittels einer rekursiven Methode die Potenz an berechnet und zurückgibt.
Herunterladen