|
|
|
using System;
|
|
|
|
|
|
|
|
namespace B_GOP01XX_XX2_K03_Aufgabe_1
|
|
|
|
{
|
|
|
|
class WallisschesProdukt
|
|
|
|
{
|
|
|
|
public double berechnePi(int n)
|
|
|
|
{
|
|
|
|
double halfPI = 1.0;
|
|
|
|
double step = 1.0;
|
|
|
|
for (double i = 1.0; i < Convert.ToDouble(n); i++, step++)
|
|
|
|
{
|
|
|
|
if (i % 2 == 0)
|
|
|
|
{
|
|
|
|
halfPI *= (step / (step + 1));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
halfPI *= ((step + 1) / step);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (halfPI * 2.0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class Helfer
|
|
|
|
{
|
|
|
|
// Zeilenpuffergröße erhöhen um bei MS (Spielzeug) Windows alle 1000 Zeilen der Ausgabe sichtbar zu halten
|
|
|
|
public void zeilenpufferErhoehen()
|
|
|
|
{
|
|
|
|
Console.BufferHeight = 2020;
|
|
|
|
}
|
|
|
|
static int tabellenWeite = 69;
|
|
|
|
|
|
|
|
// Linienausgabe f. Tabelle
|
|
|
|
public void linieAusgeben()
|
|
|
|
{
|
|
|
|
Console.WriteLine(new string('-', tabellenWeite));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class Program
|
|
|
|
{
|
|
|
|
static void Main(string[] args)
|
|
|
|
{
|
|
|
|
WallisschesProdukt walisschesProdukt = new WallisschesProdukt();
|
|
|
|
Helfer helfer = new Helfer();
|
|
|
|
helfer.zeilenpufferErhoehen();
|
|
|
|
|
|
|
|
// Gebe die Tabellenkopfzeile auf der Konsole aus
|
|
|
|
Console.WriteLine(String.Format("|{0, 4}|{1,-5}|{2, 0}|{3, 0}|", " Faktor: ", " Walis. Produkt: ", " Differenz-Math.PI:", " Abweichung in % "));
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 2; i <= 1002; i++)
|
|
|
|
{
|
|
|
|
// Ausgabe vor erstem wp überspringen um bei n = 1 istgleich 2,666666666666670 mit der Ausgabe zu beginnen
|
|
|
|
if (i.Equals(2)) continue;
|
|
|
|
|
|
|
|
// Walissches Produkt berechnen und in Variable speichern
|
|
|
|
double erg = walisschesProdukt.berechnePi(i);
|
|
|
|
|
|
|
|
// Ausgabe der Tabelle aus der Konsole
|
|
|
|
helfer.linieAusgeben();
|
|
|
|
Console.WriteLine(String.Format("|{0, 4}{1, -5}|{2, 5:F15}|"+"{3, -8:F17}|{4, -5}|"+ "", "n=", i-2, erg, Math.Abs(erg - Math.PI), (Math.Abs(erg - Math.PI)/(Math.PI / 100)) + "%"));
|
|
|
|
}
|
|
|
|
// Gebe die Tabellenkopfzeile erneut als Fusszeile auf der Konsole aus
|
|
|
|
helfer.linieAusgeben();
|
|
|
|
Console.WriteLine(String.Format("|{0, 4}|{1,-5}|{2, 0}|{3, 0}|", " Faktor: ", " Walis. Produkt: ", " Differenz-Math.PI:", " Abweichung in % "));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|