Schreiben Sie ei nProgramm zur Berechnung der Kreiskonstanten π nach der Eulerformel:

Berechnen Sie π durch Vorgabe von:
- Anzahl der Reihenglieder
- Anzahl der genauen Dezimalstellen
Lösung
import java.util.Scanner; // Scanner für die Eingabe von Werten
public class Aufgabe14
{
public static void main(String[] args)
{
// Variablen Deklaration
Scanner scnEingabe = new Scanner(System.in);
double dErgebnis, dAbweichung, dEPS;
int iDezimalstellen, iSchritte, iModus, iSchritt;
// Variablen Initialisierung
iSchritt = 0;
dErgebnis = 1.;
System.out.println("Möglichkeiten zur Berechnung von Pi:");
System.out.println("(1) Anzahl der Entwicklungsschritte vorgeben");
System.out.println("(2) genaue Dezimalstellen vorgeben");
System.out.print("\n Bitte wählen: ");
iModus = scnEingabe.nextInt();
if (iModus == 1)
{
System.out.print("\n Entwicklungsschritte: ");
iSchritte = scnEingabe.nextInt();
for (iSchritt = 1; iSchritt <= iSchritte; ++ iSchritt)
dErgebnis += Math.pow(-1, iSchritt)*(1. / (2 * iSchritt+1));
System.out.println("Ergebnis: pi = "+4. * dErgebnis
+ " nach "+iSchritte+" Schritten");
} // end if
else if (iModus == 2)
{
System.out.print("\n genaue Dezimalstellen: ");
iDezimalstellen = scnEingabe.nextInt();
dEPS = 1. / Math.pow(10, iDezimalstellen);
do
{ // Schleife berechnet Pi auf gewünschte Genauigkeit
++ iSchritt;
double dPrev = 4. * dErgebnis;
dErgebnis += Math.pow(-1, iSchritt)*(1. / (2 * iSchritt+1));
dAbweichung = dPrev-dErgebnis * 4;
if (dAbweichung < 0)
dAbweichung *= -1.;
} // end do
while (dAbweichung > dEPS);
System.out.println("Ergebnis: pi = "+4. * dErgebnis+" nach "
+ iSchritt+" Schritten");
} // end else if
else
System.out.println("Ungültigen Modus gewählt!");
} // end main
} // end class


