JAVA Pascal'sche Dreieck (rekursiv)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JAVA Pascal'sche Dreieck (rekursiv)

    Quellcode

    1. /**
    2. *
    3. * @author Torben Brodt
    4. * @version 1.0
    5. *
    6. * <p />Kann das Pascal'sche Dreieck zeichnen und berechnen
    7. * <p />Funktioniert mit Java < 1.5
    8. */
    9. public class A2_Pascalsche_Dreieck {
    10. /**
    11. * @param args
    12. */
    13. public static void main(String[] args) {
    14. int anzahl=0, rows=0, columns=0;
    15. if(args.length == 1) //Setze Variable für das Pascal'sche Dreieck
    16. try {
    17. anzahl = Integer.valueOf(args[0]);
    18. } catch(Exception e) {
    19. exit("Das ist kein Integer");
    20. }
    21. else if(args.length == 2) { // Setze Variablen für die Berechnung
    22. try {
    23. rows = Integer.valueOf(args[0]);
    24. columns = Integer.valueOf(args[1]);
    25. } catch(Exception e) {
    26. exit("Das ist kein Integer");
    27. }
    28. } else // Fehlerabfragen
    29. if(eingabe("Wollen Sie das \"Dreieck zeichnen\"(1) oder eine \"Berechnung durchführen\"(2) ? ") == 1) {
    30. // Dreieck zeichnen (1)
    31. do {
    32. anzahl = eingabe("Wie viele Zeilen soll das Dreieck besitzen? (min 1)");
    33. } while(anzahl < 1);
    34. } else { // Berechnung durchführen (2)
    35. do {
    36. rows = eingabe("Bitte geben Sie die Zeile an: (min 1) ");
    37. } while(rows < 1);
    38. do {
    39. columns = eingabe("Bitte geben Sie die Spalte an: (min 1) ");
    40. } while(columns < 1);
    41. }
    42. if(columns > rows)
    43. exit("Sorry, Ungueltige Eingabe. Sie haben mehr Spalten angegeben, als es Zeilen gibt");
    44. if(anzahl > 0) { //Zeichne das Dreieck
    45. String[] ausgabe = new String[anzahl];
    46. for (int row=1; row<anzahl; row++) {
    47. ausgabe[row] = "";
    48. for (int column=1; column<=row; column++)
    49. ausgabe[row] += (pascal(row, column) + " "); // Schreibe alle Zeilen in ein Array
    50. }
    51. int maxStellen = ausgabe[anzahl-1].length(); // Mitte
    52. for(int i=1; i<anzahl; i++) // Ausgabe des Array
    53. System.out.println( nullen((maxStellen - ausgabe[i].length()) / 2) +ausgabe[i]);
    54. } else // Berechnung
    55. System.out.println(pascal(rows, columns));
    56. }
    57. /**
    58. * rekursive Funktion für das pascal'sche Dreieck
    59. * @param row -> aktuelle Zeile
    60. * @param column -> aktuelle Spalte
    61. * @return -> der enthaltene Wert bzw. die rekursion
    62. */
    63. static int pascal(int row, int column) {
    64. if(column == 1 || column == row)
    65. return 1;
    66. //else
    67. return pascal(row-1,column-1) + pascal(row-1,column);
    68. }
    69. /**
    70. * Beendet die Java Applikation
    71. * @param text -> auszugegebender Text
    72. */
    73. static void exit(String text)
    74. {
    75. System.err.println(text);
    76. System.exit(1);
    77. }
    78. /**
    79. * Gibt n-Leerzeichen als String zurück
    80. * @param count -> anzahl der leerzeichen
    81. * @return -> gibt die leerzeichen als String zurück
    82. */
    83. static String nullen(int count)
    84. {
    85. String output="";
    86. for(int i=0; i<count; i++)
    87. output += " ";
    88. return output;
    89. }
    90. /**
    91. * @param text -> Bildschirmausgabe
    92. * @return -> Tastatureingabe
    93. */
    94. static int eingabe(String text)
    95. {
    96. System.out.print(text);
    97. java.util.Scanner input = new java.util.Scanner(System.in);
    98. try {
    99. return input.nextInt();
    100. } catch(Exception e) {
    101. return eingabe("das ist kein Integer - Bitte versuchs nochmal: ");
    102. }
    103. }
    104. }
    Alles anzeigen