Hallo,
ich habe den Programmcode geschrieben, um das Pascalsche Dreieck auszugeben. Hat auch alles gut geklappt, jezt gehts aber um die Formatierung. Letztendlich will ich erreichen, dass das Teil auch in Dreieckform (jede Zeile beginnt mittig) ausgegeben werden kann.
Hier mal mein Programmcode:
Erläuterung zum Code:
In Zeile 8-15 wird eine statische Methode zur Fakultätsberechnung definiert.
In Zeile 17-22 wird eine statische Methode zur Binomialkoeffizientenberechnung definiert.
In Zeile 24-37 wird eine statische Methode zur Ausgabe einer bestimmten Zeile des Dreiecks definiert.
Die Idee mit der Definition einer Methode zur Zeilenausgabe kam mir, weil ich unten in der main-Methode dann schreiben wollte, dass jede Zeile in einen String umgewandelt werden soll, der dann mit einer bestimmten Formatierungsvorgabe ausgegeben werden soll.
In Zeile 48 soll man durch Änderung von m die maximale Anzahl an ausgegebenen Zeilen ändern können.
Im Moment sieht das Ganze aber noch so aus wie in Zeile 42-48 und erzeugt dann folgende Bildschirmausgabe (siehe Anhang "pascal 1").
Jetzt wollte ich ab Zeile 45 folgende Änderungen vornehmen:
einfach um zu bewirken, dass jede Zeile soweit eingerückt ist, wie ich es mit dem Formatierungs-Parameter "%s" angebe (ich will letztendlich in jeder Zeile die Differenz an Zeichen, die sich mit der Anzahl der Zeichen für die längste Zeile --> m=max ergibt, mit Leerzeichen (vornedran und hintendran jeweils die Hälfte) auffüllen, um damit eine mittige Ausgabe jeder einzelnen Zeile zu erreichen. Den Code dazu schreibe ich später).
Nach der Änderung gibt er mir etwas aus, was ich mir nicht erklären kann (siehe Anhang "pascal2").
Kann mir jemand sagen,
a) Wieso die erste Zeile noch links anfängt und
b) was diese verdammte zusätzliche 1 am Anfang jeder Zeile noch soll?
Und vielleicht könnt ihr mir noch einen Hinweis geben, wie ich das korrigieren kann.
Danke schonmal im Voraus.
Grüße
ich habe den Programmcode geschrieben, um das Pascalsche Dreieck auszugeben. Hat auch alles gut geklappt, jezt gehts aber um die Formatierung. Letztendlich will ich erreichen, dass das Teil auch in Dreieckform (jede Zeile beginnt mittig) ausgegeben werden kann.
Hier mal mein Programmcode:
Java:
package pascalEnd;
package pascalEnd;
public class PascalEnd
{
public static long fakultät (long n)
{
long fak=1;
for (long i = 1; i<=n; i++) {
fak=fak*i;}
return fak;
}
public static long binkoeff (long p, long q)
{
long binko = 0;
binko = fakultät (p) / (fakultät (q)*(fakultät (p-q)));
return binko;
}
public static long Zeile (int m)
{
int k=0;
long y=0;
do{
y= binkoeff(m, k);
System.out.printf(" %d", y);
k++;
}while (k<=m);
return y;
}
public static void main(String[] args)
{
int m=0;
long z =0;
do{
z = Zeile (m);
System.out.println("\n");
m++;;
}while (m<=5);
}
}
Erläuterung zum Code:
In Zeile 8-15 wird eine statische Methode zur Fakultätsberechnung definiert.
In Zeile 17-22 wird eine statische Methode zur Binomialkoeffizientenberechnung definiert.
In Zeile 24-37 wird eine statische Methode zur Ausgabe einer bestimmten Zeile des Dreiecks definiert.
Die Idee mit der Definition einer Methode zur Zeilenausgabe kam mir, weil ich unten in der main-Methode dann schreiben wollte, dass jede Zeile in einen String umgewandelt werden soll, der dann mit einer bestimmten Formatierungsvorgabe ausgegeben werden soll.
In Zeile 48 soll man durch Änderung von m die maximale Anzahl an ausgegebenen Zeilen ändern können.
Im Moment sieht das Ganze aber noch so aus wie in Zeile 42-48 und erzeugt dann folgende Bildschirmausgabe (siehe Anhang "pascal 1").
Jetzt wollte ich ab Zeile 45 folgende Änderungen vornehmen:
Java:
z = Zeile (m);
String s = String.valueOf( z );
System.out.println("\n");
System.out.printf("%10s", s);
m++;;
einfach um zu bewirken, dass jede Zeile soweit eingerückt ist, wie ich es mit dem Formatierungs-Parameter "%s" angebe (ich will letztendlich in jeder Zeile die Differenz an Zeichen, die sich mit der Anzahl der Zeichen für die längste Zeile --> m=max ergibt, mit Leerzeichen (vornedran und hintendran jeweils die Hälfte) auffüllen, um damit eine mittige Ausgabe jeder einzelnen Zeile zu erreichen. Den Code dazu schreibe ich später).
Nach der Änderung gibt er mir etwas aus, was ich mir nicht erklären kann (siehe Anhang "pascal2").
Kann mir jemand sagen,
a) Wieso die erste Zeile noch links anfängt und
b) was diese verdammte zusätzliche 1 am Anfang jeder Zeile noch soll?
Und vielleicht könnt ihr mir noch einen Hinweis geben, wie ich das korrigieren kann.
Danke schonmal im Voraus.
Grüße