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 % ")); } } }