Ich soll eine Methode schreiben die mir das Wallische Produkt von 1 bis 1000 das Ergebnis ausgibt. Die Ergebnisse soll ich dann mit der konstante PI vergleichen.
Problematik: Die Klasse in der sich die Methode zur berechnung befindet darf keine Ein/Ausgabefunktion besitzen (bsp. Console.WriteLine). Das heißt die Ergebnisse darf ich nur über die Main Methode abrufen.
Und dort komme ich nicht weiter. Hier der Code:
namespace WallisPro { class Program { static void Main(string[] args) {
const double pi = Math.PI; double diff = 0;
WallischesProdukt instanzWallischesProdukt = new WallischesProdukt();
Ich kenne zwar das Wallische Produkt nicht weiter, aber ich kann dir vielleicht ein paar Hinweise geben, deine Aufgabe zu lösen: 1. Variante: Bisher berechent die Calculate-Methode immer das Produkt bis 1000. Du könntest ihr stattdesen einen Parameter mitgeben, bis zu dem das Ergebnis berechnet wird:
public double Calculate(int maxValue) //... for (int i = 2; i <= maxValue; ++i) //...
In der Main kannst du dann die Methode mehrmals mit passendem Parameter aufrufen:
for (int i = 2; i <= 1000; ++i) { double product = instanzWallischesProdukt.Calculate(i); diff = product - pi; Console.WriteLine("{0} - {1} = {2}" , product, pi, diff); }
2. Variante: Du kannst die Calculate-Methode immer alle Produkte bis 1000 berechnen lassen und alle Einzelergebnisse als Array oder Liste zurückgeben:
public double[] Calculate() { double[] n = new double[1000]; n[0] = 1.0;
for (int i = 2; i <= 1000; ++i) { if (i % 2 == 0) n[i - 1] = n[i - 2] * (i / (i - 1.0)); else n[i - 1] = n[i - 2] * ((i - 1.0) / i); }
for (int i = 0; i < 1000; ++i) { n[i - 0] *= 2; }
return n; }
In der Main kannst du dann alle Einzelergebnisse ausgeben:
ps: Ich schreibe das ohne es mit dem Compiler zu prüfen. Entschuldige also, wenn es noch Fehler enthalten sollte. Optimieren kann man es sicher auch noch...
pps: Irgendwas kommt hier mit den eckigen Klammern durcheinander und verfälscht die Darstellung... Störe dich also nicht an der '- 0' in der 2. Variante. Das ist nur drin, weil hier sonst die Darstellung spinnt.