Problem bei Pi-Berechnung mit SinCos()
-
Nun, denn ich muss euch nochmal bemühen.
Folgende Formel soll zur Berechnung von Pi als Programm geschrieben werden:pi = 0.5 * 1 * [Wurzel aus](2 * 1 - 2 * 1 + cos (360:X)) * sin ((180-360:X):2) * XMit X ist die Zahl der Annäherungsschritte gemeint.
float result; long double cos; long double sin; SinCos(360/1000,0,cos); SinCos((180-360/1000)/2,sin,0); result = 0.5*Power(2-2*cos,0.5)*sin*1000;Mein Problem ist:
- Ich blick die Funktion SinCos nich. Ich hab das noch nie mit dem &was kapiert.
- Hab ich n neues Thema gemacht oder jemand anderes?
-
Das Thema hier hat nicht mehr direkt mit dem ursprünglichen Thread zu tun, deshalb die Trennung.
Allerdings wird nicht recht klar, was deine Frage ist.
"Funktioniert nicht" ist keine ausreichende Problembeschreibung oder Fehlermeldung.
-
wie gesagt, ich kapier das mit der zuweisung in der Funktion SinCos() nicht. Hab ich das aus versehen so richtig gemacht? Die Hilfe meint nämlich sowas:
BCB Hilfe schrieb:
extern PACKAGE void __fastcall SinCos(const Extended Theta, Extended &Sin, Extended &Cos);
Beschreibung
Mit SinCos können Sinus und Cosinus des in Theta angegebenen Winkels in einer Operation ermittelt werden. Der Sinus wird im Parameter Sin und der Cosinus im Parameter Cos zurückgegeben.
SinCos ist doppelt so schnell wie der getrennte Aufruf von Sin und Cos für denselben Winkel.
"Funktioniert nicht", weil result 0 ergibt. und wegen dieser Warnung:
C++ Warnung] MainUnit1.cpp(22): W8030 Temporäre Größe für Parameter 'Sin' in Aufruf von '_fastcall SinCos(const long double,long double &,long double &)' verwendet
-
hatte vergessen DegToRad einzugeben. jetzt stimmt wenigstens die formel. danke
-
Wozu brauchst du SinCos?
In deiner Formel steht doch vereinfacht cos(a) * sin(b)
Wenn die Winkel verschieden sind sind doch ein einfachen Winkelfunktionen schneller.In der Hilfe steht doch: SinCos ist doppelt so schnell wie der getrennte Aufruf von Sin und Cos für denselben Winkel.
Wenn man das ganze allerdings zweimal macht hat man nichts mehr gewonnen, insbesondere wenn man 2 Resultate von 4 gar nicht benötigt.
-
Aber den Befehl Cos() kannte BCB nicht und es stand auch nix in der Hilfe. Is egal - so geht's auch.
-
Dafür gibt es die Online-Hilfe (F1).
Wenn ich mal zitieren darf:
Header File
math.h !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Category
Math Routines
Syntax
#include <math.h>
double cos(double x);
long double cosl(long double x);Description
Calculates the cosine of a value.
cos computes the cosine of the input value. The angle is specified in radians.
cosl is the long double version; it takes a long double argument and returns a long double result.
Return Value
cos of a real argument returns a value in the range -1 to 1. Error handling for these functions can be modified through _matherr (or _matherrl).