Noah Vogt 4 лет назад
Родитель
Сommit
7e67268007
1 измененных файлов с 79 добавлено и 0 удалено
  1. 79 0
      inputOutputFlanagan/bigIntegerPotenzen.java

+ 79 - 0
inputOutputFlanagan/bigIntegerPotenzen.java

@@ -0,0 +1,79 @@
+import javax.swing.JOptionPane;
+import java.util.Arrays;
+import flanagan.io.Db;
+import java.math.BigInteger;
+
+/**
+ * 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)
+ */
+public class bigIntegerPotenzen
+{
+    public static void main(String [] args)
+    {
+        int N = 0;
+        int B = 3;
+
+        /* Bedeutung: 
+         * N = die gesuchte Fakultaet
+         * 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 
+         */
+
+        // get Basiszahl input
+        try {
+            B = Db.readInt("Basiszahl:" +
+                "bestätige mit ENTER ");
+        } catch (NumberFormatException e) {
+            System.exit(1);
+        }
+
+        // get Exponent input
+        try {
+            N = Db.readInt("Exponent:" +
+                "bestätige mit ENTER ");
+        } catch (NumberFormatException e) {
+            System.exit(1);
+        }
+
+        //  validate that: N, B >= 0
+
+        if ( B < 0) {
+                Db.show(
+                "Falsche Eingabe: der Input-Parameter N < 0 \n"+
+                "Probieren Sie nochmals! Das Programm ist sofort beendet!");
+            System.exit(1);
+        }
+
+        // use big integer
+        BigInteger bigN = BigInteger.valueOf(N);
+        BigInteger bigB = BigInteger.valueOf(B);
+        bigN.add(BigInteger.ONE);
+        bigN = bigN.add(BigInteger.ONE);
+        BigInteger res = BigInteger.valueOf(1);
+        BigInteger resn = BigInteger.valueOf(1);
+
+        //for (BigInteger n = BigInteger.valueOf(1); n.compareTo(bigN) < 0; n = n.add(BigInteger.ONE))
+            if (N < 0) {
+                //res = BigInteger.valueOf(1337);
+                res = BigInteger.ONE.divide(BigInteger.valueOf(2));
+                double negativeResult = res.doubleValue();
+                JOptionPane.showMessageDialog (null,
+                    B + "^" + N + " = " + negativeResult,
+                    "Lösung", JOptionPane.INFORMATION_MESSAGE); 
+            } else {
+                res = bigB.pow(N);
+                resn = res;
+
+                JOptionPane.showMessageDialog (null,
+                    B + "^" + N + " = " + res,
+                    "Lösung", JOptionPane.INFORMATION_MESSAGE); 
+            }
+
+        // solution prompt
+
+    }
+}