Noah 4 роки тому
коміт
a2ae9008fa
1 змінених файлів з 94 додано та 0 видалено
  1. 94 0
      Input_Output_Flanagan/Fakultaet.java

+ 94 - 0
Input_Output_Flanagan/Fakultaet.java

@@ -0,0 +1,94 @@
+import javax.swing.JOptionPane;
+import java.util.Arrays;
+import flanagan.io.Db;
+
+/**
+ * Das Program liest eine ganze Zahl N (0 <= N <= 20) und
+ * berechnet den Wert von N! = 1 * 2 * ... * (N - 1) * N, wobei
+ * 0! = 1 (nach Definition)
+ * 
+ * @author Victor Yakhontov
+ * @version Version vom 29.11.12
+ */
+public class Fakultaet
+{
+    public static void main(String [] args)
+    {
+        int N = 0; // Deklaration von N - Variablen vom je Datentyp int
+
+        /* Bedeutung: 
+         * N = die gesuchte Fakultaet (0 <= N <= 20)
+         * n = laufende Fakultaet-Zahl
+         * resn = leufende Fakultaet: resn = (n - 1)!, n = 0, 1, 2, ... N
+         * res = Resultat: res = n! = n*(n - 1)!, n = 0, 1, 2, ... N
+         *     = n* resn 
+         */
+
+        // Nun wird es gecheckt, ob die Anzahl der Input-Parameter >= 2
+
+        boolean valid = false;
+
+        try {
+            N = Db.readInt("Gib die Grundzahl als eine Integer-Zahl ein und " +
+                "bestätige mit ENTER ");
+        } catch (NumberFormatException e) {
+            System.exit(1);
+        }
+
+        // Es wird nun gecheckt, ob der Input-Parameter die folgenden
+        //  Bedingungen erfuellen: N >= 0 und N <= 20
+
+        if ( N < 0 )
+        {
+                Db.show(
+                "Falsche Eingabe: der Input-Parameter N < 0 \n"+
+                "Probieren Sie nochmals! Das Programm ist sofort beendet!");
+
+            System.exit(1);
+        }
+
+        else if ( N >= 21 )
+        {
+                Db.show(
+                "Falsche Eingabe: der Input-Parameter N > 20 \n"+
+                "Probieren Sie nochmals! Das Programm ist sofort beendet!");
+
+            System.exit(1);
+        }
+
+        // An dieser Stelle gilt: 0 <= N <= 20
+
+        Db.show(
+            "Die Eingabe ist OK! Sie möchten also " + N + "! berechnen!");
+
+        // Spezialfall: 0! = 1
+
+        if (N == 0) {
+            System.out.println("Fakultaet  " + N + "! = " + 1);
+            System.exit( 0 );
+        }
+
+        System.out.format("\n%s \t n! \n-------------------------------------", " n", N);
+
+        int res = 1, resn = 1; // Deklaration von 2 Variablen vom je Datentyp int
+
+        /* Initialisierung  der Variablen res und resn 
+         * Diese sind erforderlich fuer die Schleife ueber n = 1, 2, ... N
+         */
+
+        // Schleife ueber n = 1, 2, 3, ... N 
+
+        for (int n = 1; n <= N; n++)    // FOR-Schleife ueber die Variable n = 1,2, ... , N
+        {
+            res = n*resn; // n! = n*(n - 1)! = laufender n-Wert mal "resn"
+            resn = res;    //  neuer resn = n!
+            System.out.format("\n %2d \t %-20d", n, res);
+        }
+
+        System.out.format("\n-------------------------------------");
+
+        JOptionPane.showMessageDialog (null,
+            N + "! = " + res,
+            "Lösung", JOptionPane.INFORMATION_MESSAGE); 
+    }
+}