Input/Output Leerzeilen in Ausgabe -> finde den Fehler nicht

Hallo zusammen,

ich habe gerade eben den Code für die Aufgabe (siehe angehängtes Bild) geschrieben.

Dabei habe ich jedoch das Problem, dass die ersten zwei und die letzte Zeile auf der Konsole leer sind. Bei einer Eingabe von 9 Zeilen werden also nur 6 Zeilen ausgegeben.

Leider finde ich meinen Fehler nicht.

Ich würde mich sehr über eure Hilfe freuen.

Liebe Grüße

Java:
public class P3_4_Pascal {

    public static void main(String[] args) {
        int eingabe = 9;
        }

        //Hier hat die Spaltendimension zwar mehr Platz als benötigt, aber dieser bleibt einfach leer:
        int[][] array = new int[eingabe][eingabe + 1];
        // Berechung des Pascalschen Dreieck:
        for (int i = 0; i < eingabe; i++) {
            // Erste und letzte Zahl jeder Zeile ist die 1:
            array[i][0] = 1;
            array[i][eingabe] = 1;

            // Das i-te Element der Zeile n entspricht der Summe des i-ten und
            // des (i − 1)-ten Elements der Zeile (n − 1):
            for (int spalte = 1; spalte < i - 1; spalte++) {
                //Berechnung ist erst Zeile 2 möglich/nötig:
                if(i<2){
                    continue;
                }
            array[i][spalte]=array[i-1][spalte-1]+ array[i-1][spalte];
            }
        }
      

        // Ausgabe des Pascalschen Dreieck:
        for (int zeile = 0; zeile < eingabe; zeile++) {
            for (int spalte = 0; spalte<zeile-1; spalte++){
                System.out.print(array[zeile][spalte] + " ");
            }
            //Zeilenumbruch am Ende jeder Zeile:
            System.out.println("");
        }

    }

}
 

Anhänge

  • Aufgabenstellung Pascal-Dreieck.JPG
    Aufgabenstellung Pascal-Dreieck.JPG
    44,9 KB · Aufrufe: 46
Achherrje, das erste Semester ist bei mir schon was her, ich weiß nicht mehr, wie das mit Pascal ging. 😕
 
Ich habe eine Idee, an der es liegen könnte, "wie weit" springt denn mein continue? Verlässt es nur die innere, oder auch die äußere for-Schleife?

Java:
     for (int i = 0; i < eingabe; i++) {
            // Erste und letzte Zahl jeder Zeile ist die 1:
            array[i][0] = 1;
            array[i][eingabe] = 1;

            // Das i-te Element der Zeile n entspricht der Summe des i-ten und
            // des (i − 1)-ten Elements der Zeile (n − 1):
            for (int spalte = 1; spalte < i - 1; spalte++) {
                //Berechnung ist erst Zeile 2 möglich/nötig:
                if(i<2){
                    continue;
                }
            array[i][spalte]=array[i-1][spalte-1]+ array[i-1][spalte];
            }
        }

Danke für eure Antworten!

Liebe Grüße
 
😱😱😱😱

Ich konnte mich doch wieder erinnern:
Java:
    private static void pascal(int n) {
        int[][] array = new int[n][];
        for (int i = 0; i < n; i++) {
            array[i] = new int[i + 1];
            array[i][0] = 1;
            array[i][i] = 1;
            for (int j = 1; j < i; j++) {
                array[i][j] = ?
            }
        }
        ?
    }

Das müsste es eigentlich sein:
Code:
run-single:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
BUILD SUCCESSFUL (total time: 2 seconds)

Ich kann mich auch daran erinnern, alles in eine Zeile geschrieben zu haben 😉 .

Das mit dem ? musst du jetzt selber beantworten, es wäre unfair gegenüber allen, wenn ich das jetzt beantworten würde.
 
Danke für deinen Code Vorschlag! Bei dem ? würde ich weiterhin folgendes einsetzen:

Java:
if (i < 2) {
                    continue;
                }
                array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
            }

Leider komme ich dabei immer noch auf meine falsche Ausgabe:
Code:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

Wo könnte denn dann mein Fehler liegen?

Vielen Dank!
 
Welche Prüfungen fallen denn weg
if fällt weg, continue fällt weg; du hast es doch schon richtig gemacht. 🙂

Sieh dir ein paar Ausgaben an, je mehr richtig sind, desto wahrscheinlicher ist es dass der Algorithmus richtig ist. Wenn dir lwlg ist, stelle zwei Schleifeninvarianten auf, diese sind ein Beweis Korrektheit des Algorithmus. Ist, mathematisch korrekt, aber auch kein Zuckerschlecken.
 

Zurück
Oben