Ü B U N G 5
Aufgabe 1
Gegeben sei ein Array vom Typ double mit folgenden Werten:
double[] werte =
{1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}
Dieses Array soll so verändert werden, dass an der Stelle i im
Array der Durchschnitt aller Werte von Stelle 1 bis Stelle i steht.
Schreiben Sie ein Java-Programm, was dieses Problem löst. Zum
Vergleichen Ihrer Lösung können Sie folgende Ausgabe benutzen:
Durchschnitt: Stelle 1 bis 1 = 1.0
Durchschnitt: Stelle
1 bis 2 = 1.5
Durchschnitt: Stelle 1 bis 3 = 2.0
Durchschnitt:
Stelle 1 bis 4 = 2.5
Durchschnitt: Stelle 1 bis 5 =
3.0
Durchschnitt: Stelle 1 bis 6 = 3.5
Durchschnitt: Stelle 1
bis 7 = 4.0
Durchschnitt: Stelle 1 bis 8 = 4.5
Durchschnitt:
Stelle 1 bis 9 = 5.0
Durchschnitt: Stelle 1 bis 10 =
5.5
Download der Lösung (Durchschnitt.java)
Aufgabe 2
Gegeben sei ein 3x3 Schiebepuzzle, wobei folgender
Puzzle-Zustand einen Endzustand darstellt (das leere Feld des
Schiebepuzzles wird als 0 interpretiert):
Implementieren Sie ein Java-Programm, welches einen gegebenen
Zustand bewerten soll. Dabei soll als Bewertung die Anzahl der
Plättchen, die an der falschen Stelle liegen, dienen.
Zum Beispiel trägt folgender Puzzle-Zustand die Bewertung 2, da 2
Plättchen an der falschen Stelle liegen. Verwenden Sie den folgenden
Zustand auch zum Testen Ihres Programmes.
Download der Lösung (Puzzle1.java)
Aufgabe 3 (Zusatzaufgabe)
Erweitern Sie Ihr Programm aus Aufgabe 2 folgendermaßen:
Eine
Bewertung eines Zustandes soll nicht mehr nur anhand der Anzahl der
Plättchen, die an falscher Stelle liegen, erfolgen. Es soll die Zahl
der (minimal) notwendigen Verschiebeoperationen berechnet werden,
die notwendig sind, um alle falsch liegenden Plättchen an die
richtige Stelle zu schieben.
Tip: Math.abs(int x) liefert den Betrag einer Zahl.
Folgender Zustand hat die Bewertung 6, da für die Zahl 8 und die
Zahl 3 jeweils mindestens 3 Verschiebungen notwendig sind, um beide
Plättchen an die richtige Stelle zu bringen.
Download der Lösung (Puzzle2.java)
Aufgabe 4
Gegeben sei folgendes int-Array:
int[][] array2D = new int[][] {new int[] {1,2,3},
new int[] {4,2},
new int[] {6,5,4,3,2,1,0},
new int[] {0}
};
Schreiben Sie ein Java-Programm, dass den Inhalt von
array2D anschaulich formatiert auf dem Bildschirm ausgibt.
Download der Lösung (U5_4.java)
Aufgabe 5
Matrizen spielen in vielen Bereichen der Informatik eine
wichtige Rolle, z.B. in der Bildverarbeitung oder in der
Bio-Informatik. Eine Matrix ähnelt einer Tabelle, auch hier gibt es
Zeilen und Spalten.
Jede "Zelle" der Matrix enthält genau einen
Wert, der über einen eindeutigen Index angesprochen werden
kann.

(Beispiel für eine 4x4 Matrix)
Der Wert xij hat den Index ij, wobei die erste
Ziffer die Zeile angibt und die zweite die Spalte, in der sich der
Wert befindet.
Beispiel: x23 => Index 23:
Zeile 2, Spalte 3
Überlegen Sie sich, wie Sie in Java eine
Matrix implementieren könnten.
Schreiben Sie ein
Java-Programm Matrix, dass eine 4x4 Matrix enthält. Belegen
Sie diese Matrix mit Hilfe eines Schleifenkonstruktes so, dass jede
"Zelle" den Wert ihres Index enthält.
Das Programm soll am
Ende folgende Matrix auf dem Bildschirm ausgeben: 11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
Download der Lösung (Matrix.java)
Aufgabe 6
Erweitern Sie das Programm aus Aufgabe 2 so, dass Sie die
Dimension der Matrix über 2 Kommandozeilenparameter angeben können.
Parameter 1 entspricht der Anzahl der Zeilen, Parameter 2 der
Anzahl der Spalten.
Wie Sie Kommandozeilenparameter in einem
Java-Programm nutzen können, sollten Sie in den Übungen bereits
kennengelernt haben.
Möglicher Programmaufruf:
java Matrix 3 4
(Würde eine 3x4 Matrix ausgeben)
Download der Lösung (MatrixErweitert.java)
Zusatzaufgabe
Matrizenmultiplikation: Gegeben sind zwei n x n
-Matrizen A und B.
Das Produkt zweier Matrizen liefert
wieder eine Matrix: C = A*B.
Der Wert an der Stelle
cij berechnet sich über
cij = |
 |
aik · bkj
|
Schreiben Sie ein Programm, das
die Matrix C berechnet, wenn die Matrizen A und B gegeben sind. C
ist hier ebenfalls eine n x n Matrix.
Lassen Sie die Matrix
C auf dem Bildschirm ausgeben.
Download der Lösung (Matrizenmultiplikation.java)