Inhaltsverzeichnis
Übungsblatt (Aufgabe 4 - 7)
Aufgabe 4 (zweidimensionale Arrays)
a) Schreiben Sie eine Klasse mit einem Attribut
int[][] zahlen = new int[10][10];
b) Fügen Sie eine Methode ausgabe(int[][] feld) hinzu, die die Werte der Feldelemente zeilen- und spaltenweise ausgibt.
Tipp: zahlen.length
ist die Anzahl der Zeilen des zweidimensionalen Feldes, zahlen[i].length
die Anzahl der Spalten in der i-ten Zeile.
c) Fügen Sie eine Methode initialbelegung(int[][] feld) hinzu, die das Feld von 0 an aufsteigend zeilen- und spaltenweise mit fortlaufenden ganzen Zahlen belegt!
d) Fügen Sie eine Methode schachfeldbelegung(int[][] feld) hinzu, die das Feld wie ein Schachfeld abwechselnd mit 0 und 1 belegt!
e) Fügen Sie eine Methode spiegeln(int[][] feld) hinzu, die das Feld entlang der Achse feld[0][0], feld[1][1], … spiegelt!
package test.informatik10.arbeitsblatt1; public class Aufgabe4 { private int[][] zahlen = new int[10][10]; public static void main(String[] args) { new Aufgabe4().start(); } private void start() { initialbelegung(zahlen); ausgabe(zahlen); spiegeln(zahlen); ausgabe(zahlen); schachfeldbelegung(zahlen); ausgabe(zahlen); } private void spiegeln(int[][] feld) { int zeile = 0; while(zeile < feld.length){ int spalte = 0; while(spalte < zeile){ int z = feld[zeile][spalte]; feld[zeile][spalte] = feld[spalte][zeile]; feld[spalte][zeile] = z; spalte++; } zeile++; } } private void schachfeldbelegung(int[][] feld) { int zeile = 0; while(zeile < feld.length){ int spalte = 0; while(spalte < feld.length){ feld[zeile][spalte] = (zeile + spalte) % 2; spalte++; } zeile++; } } private void initialbelegung(int[][] feld) { int i = 0; int zeile = 0; while(zeile < feld.length){ int spalte = 0; while(spalte < feld.length){ feld[zeile][spalte] = i; i++; spalte++; } zeile++; } } private void ausgabe(int[][] feld) { int zeile = 0; while(zeile < feld.length){ int spalte = 0; while(spalte < feld.length){ System.out.print(feld[zeile][spalte] + " "); if(feld[zeile][spalte] < 10){ System.out.print(" "); } spalte++; } System.out.println(); zeile++; } System.out.println("------------------------------------------------"); } }
Ausgabe des Programms:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 ------------------------------------------------ 0 10 20 30 40 50 60 70 80 90 1 11 21 31 41 51 61 71 81 91 2 12 22 32 42 52 62 72 82 92 3 13 23 33 43 53 63 73 83 93 4 14 24 34 44 54 64 74 84 94 5 15 25 35 45 55 65 75 85 95 6 16 26 36 46 56 66 76 86 96 7 17 27 37 47 57 67 77 87 97 8 18 28 38 48 58 68 78 88 98 9 19 29 39 49 59 69 79 89 99 ------------------------------------------------ 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 ------------------------------------------------ Process finished with exit code 0
Aufgabe 5 (Intervallschachtelung)
Schreiben Sie eine Methode double wurzel(double z)
, die mit Hilfe von Intervallschachtelung die Wurzel der übergebenen Zahl z
berechnet!
Aufgabe 6 (Fakultät, rekursiv)
Schreiben Sie eine Methode long fakultaet(long z)
, die die Fakultät der übergebenen Zahl z
berechnet, indem sie
a) im Fall z > 0 den Wert z * fakultaet(z - 1) und b) im Fall z == 0 den Wert 1 zurückgibt!
Aufgabe 7 (Summe, rekursiv)
Schreiben Sie eine Methode long summe(long n)
, die mit Hilfe von Rekursion den Wert der Summe 1 + 2 + … + n
berechnet!
Lösungen von Aufgabe 5 - 7:
package test.informatik10.arbeitsblatt1; public class Aufgabe5Bis7 { public static void main(String[] args) { new Aufgabe5Bis7().start(); } private void start() { double w = wurzel(2.00); System.out.println("Die Wurzel von 2 ist: " + w); long f = fakultaet(10); System.out.println("10! = " + f); long s = summe(20); System.out.println("Die Summe von 1 bis 20 ist: " + s); } private long summe(long n) { if(n == 1){ return 1; } return n + summe(n - 1); } private double wurzel(double z) { double links = 0; double rechts = z; while( rechts * rechts - z > 0.000000001 || z - links * links > 0.000000001 ){ double mitte = (rechts + links)/2; if(mitte * mitte > z){ rechts = mitte; } else { links = mitte; } } return (rechts + links)/2; } private long fakultaet(long n) { if(n == 0){ return 1; } return n * fakultaet(n - 1); } }
Ausgabe:
Die Wurzel von 2 ist: 1.4142135622678325 10! = 3628800 Die Summe von 1 bis 20 ist: 210