2016-12-21 4 views
-2

enter image description here

Ich schrieb hier einen solchen Code:Wie minimiert man die große Anzahl von Math in C#?

Double x = 3.74 * Math.Pow(10.0, -2); 
Double y = -0.825; 
Double z = 0.16 * Math.Pow(10.0, 2); 
Double v; 

v = 1 + Math.Pow(Math.Sin, 2)(x + y)/Math.Abs(x - 2*y/1 + Math.Pow(x, 2) + Math.Pow(y, 2)) * Math.Pow(x, Math.Abs(y)) + Math.Pow(Math.Cos, 2)*(Math.Atan * 1/z); 

Console.WriteLine(v); 

Console.Write("Press any key to continue . . . "); 
Console.ReadKey(true); 

Aber ich habe die Nachricht von Compiler, dass diese Lösung zu viel Mathe verwendet wird.

P.S. Ich benutze SharpDevelop, weil es leicht ist. Ich selbst lerne programmieren, weil ich den Beruf wechseln möchte.

+1

'" Aber ich habe die Nachricht, dass diese Lösung zu viel Math verwendet wird. "- Ich habe keine Ahnung, was das bedeutet. – David

+2

"Aber ich habe die Nachricht, dass diese Lösung zu viel Math verwendet wird." Was? Bekomme diese Nachricht von was/wer? – itsme86

+1

Von Ihrem Lehrer, Mitarbeiter, Chef? Sicher nicht der Compiler. –

Antwort

3

Sie lösen solche Probleme, indem Sie sie in leicht verständliche Teile zerlegen. Ich Null Garantie mache, dass ich dieses Recht habe, aber ich wollte die Technik für Sie demonstrieren:

Double numerator= 1 + Math.Sin(x + y) * Math.Sin(x + y); 
Double denominator = Math.Abs(x - ((2 * y)/(1 + (x*x)*(y*y)))); 

Double firstTerm = (numerator/denominator) * Math.Pow(x, Math.Abs(y)); 
Double secondTerm = Math.Cos(Math.Atan(1/z) * Math.Cos(Math.Atan(1/z); 

Double finalAnswer = firstTerm + secondTerm; 

Notieren Sie die Anzahl der Klammern in der zweiten Zeile - das ist ein Zeichen dafür, dass ich diese brach sollte in ein anderer Begriff, wie es zu komplex geworden ist.

+0

Sie könnten unnötige Klammern in der zweiten Zeile überspringen, so: 'Math.Abs ​​(x - (2 * y/(1 + x * x * y * y))); ' – Furmek

+0

Ich könnte, aber ich machte es für den Leser offensichtlich, als ich x^2 und y^2 tat. –