| 

.NET C# Java Javascript Exception

4
Hallo zusammen,

ich habe folgende Aufgabenstellung:

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();

instanzWallischesProdukt.Calculate();

diff = instanzWallischesProdukt.Calculate() - pi;

for (int i = 2; i <= 1000; ++i)

Console.WriteLine("{0} - {1} = {2}" ,instanzWallischesProdukt.Calculate(), pi, diff);
Console.ReadLine();


}
}

public class WallischesProdukt
{
public double Calculate()
{

double n = 1.0;

for (int i = 2; i <= 1000; ++i)
{

if (i % 2 == 0)
n *= (i / (i - 1.0));

else
n *= ((i - 1.0) / i);

}

return n*2;
}
}
}


Wie kann ich die Ergebnisse meiner Methode WallischesProdukt 1 zu 1 in der Main Methode aufrufen?

Vielen Dank im Voraus für eure Hilfe.

VG,
Andi
06.05.2018
AndCo95 11 1
1 Antwort
0
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:
double[] products = instanzWallischesProdukt.Calculate();
for (int i = 2; i <= products.Length(); ++i)
{
diff = products[i - 1] - pi;
Console.WriteLine("{0} - {1} = {2}" , products[i - 1], pi, diff);
}


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.
06.05.2018
jsc 289 1 7
jsc 289 1 7

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH