Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
schule:klassen:2017:10b:kap8uebungen2 [2018/03/30 11:00] – [Aufgabe 7 (Summe, rekursiv)] martin | schule:klassen:2017:10b:kap8uebungen2 [2021/12/29 10:40] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Ü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: '' | ||
+ | **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!** \\ | ||
+ | <code java> | ||
+ | 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 '' | ||
+ | |||
+ | ==== Aufgabe 6 (Fakultät, rekursiv) ==== | ||
+ | **Schreiben Sie eine Methode '' | ||
+ | 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 '' | ||
+ | |||
+ | **Lösungen von Aufgabe 5 - 7: ** \\ | ||
+ | <code java> | ||
+ | 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(" | ||
+ | |||
+ | long f = fakultaet(10); | ||
+ | System.out.println(" | ||
+ | |||
+ | long s = summe(20); | ||
+ | System.out.println(" | ||
+ | |||
+ | } | ||
+ | |||
+ | 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 | ||
+ | </ |