Quellcode
- /**
- *
- * @author Torben Brodt
- * @version 1.0
- *
- * <p />Kann das Pascal'sche Dreieck zeichnen und berechnen
- * <p />Funktioniert mit Java < 1.5
- */
- public class A2_Pascalsche_Dreieck {
- /**
- * @param args
- */
- public static void main(String[] args) {
- int anzahl=0, rows=0, columns=0;
- if(args.length == 1) //Setze Variable für das Pascal'sche Dreieck
- try {
- anzahl = Integer.valueOf(args[0]);
- } catch(Exception e) {
- exit("Das ist kein Integer");
- }
- else if(args.length == 2) { // Setze Variablen für die Berechnung
- try {
- rows = Integer.valueOf(args[0]);
- columns = Integer.valueOf(args[1]);
- } catch(Exception e) {
- exit("Das ist kein Integer");
- }
- } else // Fehlerabfragen
- if(eingabe("Wollen Sie das \"Dreieck zeichnen\"(1) oder eine \"Berechnung durchführen\"(2) ? ") == 1) {
- // Dreieck zeichnen (1)
- do {
- anzahl = eingabe("Wie viele Zeilen soll das Dreieck besitzen? (min 1)");
- } while(anzahl < 1);
- } else { // Berechnung durchführen (2)
- do {
- rows = eingabe("Bitte geben Sie die Zeile an: (min 1) ");
- } while(rows < 1);
- do {
- columns = eingabe("Bitte geben Sie die Spalte an: (min 1) ");
- } while(columns < 1);
- }
- if(columns > rows)
- exit("Sorry, Ungueltige Eingabe. Sie haben mehr Spalten angegeben, als es Zeilen gibt");
- if(anzahl > 0) { //Zeichne das Dreieck
- String[] ausgabe = new String[anzahl];
- for (int row=1; row<anzahl; row++) {
- ausgabe[row] = "";
- for (int column=1; column<=row; column++)
- ausgabe[row] += (pascal(row, column) + " "); // Schreibe alle Zeilen in ein Array
- }
- int maxStellen = ausgabe[anzahl-1].length(); // Mitte
- for(int i=1; i<anzahl; i++) // Ausgabe des Array
- System.out.println( nullen((maxStellen - ausgabe[i].length()) / 2) +ausgabe[i]);
- } else // Berechnung
- System.out.println(pascal(rows, columns));
- }
- /**
- * rekursive Funktion für das pascal'sche Dreieck
- * @param row -> aktuelle Zeile
- * @param column -> aktuelle Spalte
- * @return -> der enthaltene Wert bzw. die rekursion
- */
- static int pascal(int row, int column) {
- if(column == 1 || column == row)
- return 1;
- //else
- return pascal(row-1,column-1) + pascal(row-1,column);
- }
- /**
- * Beendet die Java Applikation
- * @param text -> auszugegebender Text
- */
- static void exit(String text)
- {
- System.err.println(text);
- System.exit(1);
- }
- /**
- * Gibt n-Leerzeichen als String zurück
- * @param count -> anzahl der leerzeichen
- * @return -> gibt die leerzeichen als String zurück
- */
- static String nullen(int count)
- {
- String output="";
- for(int i=0; i<count; i++)
- output += " ";
- return output;
- }
- /**
- * @param text -> Bildschirmausgabe
- * @return -> Tastatureingabe
- */
- static int eingabe(String text)
- {
- System.out.print(text);
- java.util.Scanner input = new java.util.Scanner(System.in);
- try {
- return input.nextInt();
- } catch(Exception e) {
- return eingabe("das ist kein Integer - Bitte versuchs nochmal: ");
- }
- }
- }