Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
schule:klassen:2017:10b:kap8uebungen2 [2018/03/30 11:33]
martin [Aufgabe 4 (zweidimensionale Arrays)]
schule:klassen:2017:10b:kap8uebungen2 [2018/03/30 13:00] (aktuell)
martin [Aufgabe 7 (Summe, rekursiv)]
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: ''​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!** \\
  
 +<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("​------------------------------------------------"​);​
 +
 +    }
 +
 +
 +}
 +</​code>​
 +**Ausgabe des Programms:​**
 +
 +<​code>​
 +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
 +</​code>​
 + 
 +==== 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: ** \\ 
 +<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("​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);
 +    }
 +
 +
 +}
 +</​code>​
 +
 +**Ausgabe: ** \\ 
 +<​code>​
 +Die Wurzel von 2 ist: 1.4142135622678325
 +10! = 3628800
 +Die Summe von 1 bis 20 ist: 210
 +</​code>​
Drucken/exportieren
QR-Code
QR-Code schule:klassen:2017:10b:kap8uebungen2 (erstellt für aktuelle Seite)