====== Ü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