pascalsches Dreieck Zentrierung.

_so_far_away_

Mitglied
Java:
public class PascalschesDreieck {
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter the maximum row number to process: ");
        int row = scanner.nextInt();
        print(row);
    }
 
    public static void print(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print(pascal(i, j) + " ");
            }
            System.out.println();
        }
    }
 
    public static int pascal(int i, int j) {
        if (j == 0) {
            return 1;
        } else if (j == i) {
            return 1;
        } else {
            return pascal(i - 1, j - 1) + pascal(i - 1, j);
        }
    }
 
}
Hi, ich habe ein pascalsches Dreieck programmiert und möchte es aber schöner gestalten. Jetzt sieht es so aus:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
.....
....
aber ich möchte es schön als Dreieck anzeigen lassen.
So ungefähr:
---------1
--------1 1
-------1 2 1
------1 3 3 1
-----1 4 6 4 1
.............

Weiß jemand wie es geht?
Hier ist der Code
 
Also die Füllzeichen müssen nicht unbedingt vorhanden sein. Ich könnte es leider hier im Forum nicht anders darstellen und deswegen habe ich die Füllzeichnen genommen, damit ich einen schönes Dreieck zeichnen kann.
 
oder schon, also es geht von unten nach oben der Zusammenhang. Es muss gelten, dass es von der letzten Zeile nach oben immer jeweils eine oder 2 Leerzeichnen bzw. Füllzeichnen addiert werden
 
aber wie soll ich es implementieren? weil ich relativ neu in der Branche bin
Java:
public class StartPascalTriangle {

    public static void main(String[] args) {
        System.out.println(getPascalTrinangleStr(7));
    }

    public static int binominalCoefficient(int n, int k) {
        if (n < k)
            return binominalCoefficient(k, n);
        if (k == 0 || k == n)
            return 1;
        return binominalCoefficient(n - 1, k - 1) + binominalCoefficient(n - 1, k);
    }

    private static String centerStr(String[] lines) {
        StringBuffer tmp = new StringBuffer();
        int len = lines.length;
        int max = lines[len - 1].length();
        for (int i = 0; i < lines.length; i++) {
            tmp.append(multiply(' ', (max - lines[i].length()) / 2) + lines[i]);
            tmp.append(System.lineSeparator());
        }
        return tmp.toString();
    }

    public static String getPascalLine(int n) {
        StringBuffer tmp = new StringBuffer();
        for (int k = 0; k <= n; k++) {
            tmp.append(binominalCoefficient(n, k));
            tmp.append(" ");
        }
        return tmp.toString();
    }

    public static String getPascalTrinangleStr(int num) {
        String[] lines = new String[num + 1];
        for (int n = 0; n <= num; n++)
            lines[n] = getPascalLine(n);
        return centerStr(lines);
    }

    public static String multiply(char c, int num) {
        StringBuffer tmp = new StringBuffer();
        for (int i = 0; i < num; i++)
            tmp.append(c);
        return tmp.toString();
    }
}
 
Java:
import java.util.Scanner;

public class PascalschesDreieck {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter the maximum row number to process: ");
        int row = scanner.nextInt();
        print(row);
    }

    public static void print(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print(pascal(i, j) + " ");
            }
            System.out.println();
        }
    }

    public static int pascal(int i, int j) {
        if (i == 0 || j == 0 || i == j) {
            return 1;
        } else {
            return pascal(i - 1, j - 1) + pascal(i - 1, j);
        }
    }

}
 
Java:
public class StartPascalTriangle {

    public static void main(String[] args) {
        System.out.println(getPascalTrinangleStr(7));
    }

    public static int binominalCoefficient(int n, int k) {
        if (n < k)
            return binominalCoefficient(k, n);
        if (k == 0 || k == n)
            return 1;
        return binominalCoefficient(n - 1, k - 1) + binominalCoefficient(n - 1, k);
    }

    private static String centerStr(String[] lines) {
        StringBuffer tmp = new StringBuffer();
        int len = lines.length;
        int max = lines[len - 1].length();
        for (int i = 0; i < lines.length; i++) {
            tmp.append(multiply(' ', (max - lines[i].length()) / 2) + lines[i]);
            tmp.append(System.lineSeparator());
        }
        return tmp.toString();
    }

    public static String getPascalLine(int n) {
        StringBuffer tmp = new StringBuffer();
        for (int k = 0; k <= n; k++) {
            tmp.append(binominalCoefficient(n, k));
            tmp.append(" ");
        }
        return tmp.toString();
    }

    public static String getPascalTrinangleStr(int num) {
        String[] lines = new String[num + 1];
        for (int n = 0; n <= num; n++)
            lines[n] = getPascalLine(n);
        return centerStr(lines);
    }

    public static String multiply(char c, int num) {
        StringBuffer tmp = new StringBuffer();
        for (int i = 0; i < num; i++)
            tmp.append(c);
        return tmp.toString();
    }
}
Code:
public class StartPascalTriangle {

    public static void main(String[] args) {
        System.out.println(getPascalTrinangleStr(7));
    }

    public static int binominalCoefficient(int n, int k) {
        if (k == 0 || k == n) {
            return 1;
        }

        return binominalCoefficient(n - 1, k - 1) + binominalCoefficient(n - 1, k);
    }

    private static String centerStr(String[] lines) {
        StringBuilder tmp = new StringBuilder();
        int len = lines.length;
        int max = lines[len - 1].length();
        for (int i = 0; i < lines.length; i++) {
            tmp.append(multiply(' ', (max - lines[i].length()) / 2) + lines[i]);
            tmp.append(System.lineSeparator());
        }
        return tmp.toString();
    }

    public static String getPascalLine(int n) {
        StringBuilder tmp = new StringBuilder();
        for (int k = 0; k <= n; k++) {
            tmp.append(binominalCoefficient(n, k));
            tmp.append(" ");
        }
        return tmp.toString();
    }

    public static String getPascalTrinangleStr(int num) {
        String[] lines = new String[num + 1];
        for (int n = 0; n <= num; n++) {
            lines[n] = getPascalLine(n);
        }
        return centerStr(lines);
    }

    public static String multiply(char c, int num) {
        StringBuilder tmp = new StringBuilder();
        for (int i = 0; i < num; i++) {
            tmp.append(c);
        }
        return tmp.toString();
    }
}
 

Zurück
Oben