Pascalsche Dreieck in Dreieckform

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi
folgendes Problem
habe ein Pascalsches Dreieck Programm geschrieben und das funktioniert
Aber die Ausgabe ist linksbündig, also am linken Rand stehen die 1en untereinander, ich möchte das aber in Dreiecksform haben, also die erste 1 oben in der Mitte , wie krieg ich das hin??

Code:
import java.util.Scanner;

public class Pascal{
  public static void main(String[] args){
   
	
   	System.out.print("Pascalsches Dreieck : Tiefe waehlen ");
    Scanner nutzerEingabe = new Scanner(System.in);
	int tiefe = nutzerEingabe.nextInt();
	int spalte, zeile;
	int [][]dreieck = new int [tiefe+1][tiefe+1];
		
		dreieck[0][0] = 1;//1. Wert im Feld ist die 1
		
		
		for (zeile = 1; zeile <= tiefe; zeile++){
			System.out.print("Tiefe " + zeile + ": 1");
			dreieck[0][zeile] = 1;// Zahlen ganz links sind 1
			
			for (spalte = 1; spalte <= tiefe; spalte++){
   
				if (spalte < zeile) // Berechnung des Feldes
					dreieck[spalte][zeile] = dreieck[spalte-1][zeile-1] + dreieck[spalte][zeile-1];
   							   
				if (dreieck[spalte][zeile] != 0) // Ausgabe der  Zahlen != 0
					System.out.print(" " + dreieck[spalte][zeile]);
				}
			System.out.println("");
		}
  }
}
 

Marco13

Top Contributor
Schnell hingepfuscht... (EDIT: Macht so halt erstmal nur für EINstellige Zahlen Sinn - alles weitere müßte eh etwas allgemeiner gelöst werden...)


Code:
import java.util.Scanner;

public class Pascal{
  public static void main(String[] args){


      System.out.println("Pascalsches Dreieck : Tiefe waehlen ");
    //Scanner nutzerEingabe = new Scanner(System.in);
   int tiefe = 5; //nutzerEingabe.nextInt();
   int spalte, zeile;
   int [][]dreieck = new int [tiefe+1][tiefe+1];

      dreieck[0][0] = 1;//1. Wert im Feld ist die 1


      for (zeile = 1; zeile <= tiefe; zeile++){
         System.out.print("Tiefe " + zeile + ": "+indent(zeile, tiefe)+" 1");
         dreieck[0][zeile] = 1;// Zahlen ganz links sind 1

         for (spalte = 1; spalte <= tiefe; spalte++){

            if (spalte < zeile) // Berechnung des Feldes
               dreieck[spalte][zeile] = dreieck[spalte-1][zeile-1] + dreieck[spalte][zeile-1];

            if (dreieck[spalte][zeile] != 0) // Ausgabe der  Zahlen != 0
               System.out.print(" " + dreieck[spalte][zeile]);
            }
         System.out.println("");
      }
  }
  private static String indent(int row, int maxRows)
  {
      int n = maxRows-row;
      String s = "";
      for (int i=0; i<n; i++)
      {
          s+=" ";
      }
      return s;
  }

}
 

0x7F800000

Top Contributor
Nicht so schnell hingepfuscht, sondern schnell aus den alten Sachen ausgekramt ;) :
Code:
import java.io.*;

public class PascalsTriangle{

	//tab
	private static void tab(int len){
		String str="";
		for(int i=0; i<len; i++){
			str+=" ";
		}
		System.out.print(str);
	}

	public static void main(String[] args){
		//declaration of the array
		long[][] numbers;
		int degree=0;
		
		BufferedReader r=new BufferedReader(new InputStreamReader(System.in));
		System.out.println("Tiefe? : ");
		while(true){
			try{
				degree=Integer.parseInt(r.readLine());
				if(degree<0){
					throw new IllegalArgumentException("Der Grad kann nicht negativ sein");
				}else{
					break;
				}
			}catch(Exception e){
				e.printStackTrace();
				System.out.println("Geben Sie eine nicht zu grosse natuerliche zahl ein: ");
				continue;
			}
		}
		
		//alloc
		numbers=new long[degree+1][];
		for(int i=0; i<degree+1; i++){
			numbers[i]=new long[i+1];
		}
		//fill the array
		for(int row=0; row<=degree; row++){
			//set first and last element to "1"
			numbers[row][0]=numbers[row][row]=1;
			
			//get all other by adding two numbers from the previous row
			for(int col=1; col<row; col++){
				numbers[row][col]=
					numbers[row-1][col-1]+numbers[row-1][col];
			}
		}
		
		//Layout
		//important for good layout: look how long the longest number is
		int maxDigits=(""+numbers[degree][degree/2]).length();
		//make sure that maxDigits is divisible by 2
		maxDigits=(maxDigits%2==0)?(maxDigits):(maxDigits+1);
		//format string
		String formatString=" %"+maxDigits+"d ";
		
		//print
		for(int row=0; row<=degree; row++){
		System.out.printf("Tiefe %2d :",row);
		tab(((degree-row)*(2+maxDigits))/2);
		for(int col=0; col<=row; col++){
			System.out.printf(formatString,numbers[row][col]);
		}
		System.out.println();
		}
	}
}
also, das ätzendste ist diese varablen einrückungen an die richtige stelle zu setzen, dann ist printf() noch sehr nützlich, wenn man die länge der größten zifferdarstellung rausgefunden hat.

@Marco 13: was ihr da im anderen unterforum treibt will ich mir heut gar nicht erst anguggen, hab schon genug stochastik hausaufgaben für morgen :p
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Erste Schritte Pascalsche Dreieck Java Basics - Anfänger-Themen 3
1 2D-Array, dass das pascalsche Dreieck berechnet Java Basics - Anfänger-Themen 2
R Pascalsche Dreieck Java Basics - Anfänger-Themen 4
R Pascalsche Dreieck Java Basics - Anfänger-Themen 8
H Compiler-Fehler Pascalsche Dreieck Java Basics - Anfänger-Themen 2
E Pascalsche Dreieck aus Java openbook Java Basics - Anfänger-Themen 3
T Pascalsche Dreieck ERKLÄRUNG Java Basics - Anfänger-Themen 6
X Pascalsche Dreieck Java Basics - Anfänger-Themen 6
_so_far_away_ pascalsches Dreieck Zentrierung. Java Basics - Anfänger-Themen 12
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
G Magisches Dreieck Java Basics - Anfänger-Themen 2
F Pascalsches Dreieck mit Rückgabewert Java Basics - Anfänger-Themen 2
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
S Überprüfung rechtwinkliges Dreieck Java Basics - Anfänger-Themen 4
Z Warum kein Dreieck aus Sternen? Java Basics - Anfänger-Themen 9
L Dreieck Java Basics - Anfänger-Themen 22
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
L Pascalsches Dreieck Java Basics - Anfänger-Themen 4
D Pascal'sches Dreieck Java Basics - Anfänger-Themen 6
N Methoden Gleichseitiges Dreieck erstellen Java Basics - Anfänger-Themen 8
U Dreieck Java Basics - Anfänger-Themen 22
E Dreieck zeichnen Java Basics - Anfänger-Themen 3
L Dreieck Kreis Java Basics - Anfänger-Themen 12
B Dreieck Flächenberechnung Java Basics - Anfänger-Themen 2
B Java Grafikprogrammierung Dreieck Java Basics - Anfänger-Themen 6
I Umgedrehtes Dreieck Java Basics - Anfänger-Themen 3
M Dreieck erstellen Java Basics - Anfänger-Themen 17
J Dreieck Ausgeben Java Basics - Anfänger-Themen 3
C Pascalsches Dreieck: Ausgabeproblem Java Basics - Anfänger-Themen 10
K pascalsches Dreieck Java Basics - Anfänger-Themen 8
M Pascalsches Dreieck Java Basics - Anfänger-Themen 12
M Dreieck prüfen Java Basics - Anfänger-Themen 8
W Pascalsches Dreieck Java Basics - Anfänger-Themen 19
B Bitte um Hilfe es geht um Array + Punkte wie Dreieck,Fläche etc. Java Basics - Anfänger-Themen 12
D Pascalsches Dreieck Java Basics - Anfänger-Themen 9
H Dreieck aus Zeichen Java Basics - Anfänger-Themen 4
L Paskalsche Dreieck im Array Java Basics - Anfänger-Themen 2
U Rekursive lösung von pascal dreieck Java Basics - Anfänger-Themen 11
H2SO3- dreieck, bild --> maus klick event. Wie gehts? Java Basics - Anfänger-Themen 10
Antoras Dreieck zeichnen Java Basics - Anfänger-Themen 2
A Problem Gleichseitiges Dreieck aus Sternchen Java Basics - Anfänger-Themen 7
G Dreieck mit Java Apllet Java Basics - Anfänger-Themen 10
V Dreieck spiegeln Java Basics - Anfänger-Themen 3
L Dreieck soll Farbe ändern Java Basics - Anfänger-Themen 4
L Dreieck füllen Java Basics - Anfänger-Themen 4
X Dreieck ausgeben Java Basics - Anfänger-Themen 3
B Hindergrundfarbe in JPanel und Dreieck zeichnen Java Basics - Anfänger-Themen 4
D Das Problem mit dem Dreieck. Java Basics - Anfänger-Themen 5
B auf der Spitze stehendes Dreieck mit for-Schleifen Java Basics - Anfänger-Themen 6
lan2711 Anfänger: Konstruktion Dreieck Java Basics - Anfänger-Themen 2
G Pascalsches Dreieck Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben