Tja da ich mitlerweile schon die 3. Anfrage zu dem Problem hatte obwohl dies recht leicht ist aber auch schnell tricky werden kann, poste ich hier mal einen Beispielprogramm in C bzw C++ (wenn man die Typecasts entfernt gehts auch in Standart C)
#include
#include
int fak(int f)
{
if(f<=0)
return 1;
else
return (f * fak(f-1));
}
double mein_sin (double winkel_bogenmass, double summe = 0, int iteration = 0)
{
// Taylorreihe: x - x^3/3! + x^5/5! + ... +(-1)^(n+1)*x^(2*n+1)/(2*n+1)!
double term = (pow(winkel_bogenmass, (2 * iteration + 1) )/fak(2 * iteration + 1));
if( fabs(term) >= 0.00001 )
return mein_sin(winkel_bogenmass, (summe + pow(static_cast(-1), iteration) * term), (iteration + 1));
else
return ( summe + pow(static_cast(-1), iteration)*term);
}
int main ()
{
double winkel_grd, winkel_bog;
double berechnetersin, echtersin;
// Merke input erfolgt im Gradmaß somit muss es ins Bogenmaß umgeformt werden mit der formel x = a/180 · p wobei x deinem Gradmass entspricht
// Um das ganze für C Spezifisch umzuformen entweder die Konstate M_PI nutzen oder direkt angeben, sähe dann folgendermaßen aus
// Wenn man M_PI benutzt kanns sein dass man das dem Compiler mittelein muss er solle doch bitte auch die Mathe Konstaten laden/einbinden
// bogenmass = gradmass/180*3.1415926535;
// bogenmass = gradmass/180*M_PI;
// Die umrechnung in die andere richtung wäre dann
// a = (x · 180)/pi sprich
// gradmass = (bogenmass*180)/3.1415926535;
// gradmass = (bogenmass*180)/M_PI;
// Wie gesagt Variablen in diesem fall müssen als Bogenmaß übergeben werden sonst kommt nur Grütze raus!
// In Anlehnung an den Taschenrechner
// deg = gradmass
// rad = bogenmass
printf("Geben sie eine reelle Zahl ein\n");
scanf("%lf", &winkel_grd);
// Umrechnen in Bogenmaß
winkel_bog = winkel_grd/180*3.1415926535;
berechnetersin = mein_sin(winkel_bog);
echtersin = sin(winkel_bog);
printf("mein sinus: %lf, echter sinus:%lf", berechnetersin, echtersin);
return 0;
}
ich hoffe das hilf einigen weiter
MfG Frank
Wie hoch möchtest du denn? Im Zweifel machste halt nen long draus.
Ist integer für die Fakultät nicht ein wenig klein? 🙂