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