Seite 1 von 1

Ergebnis ist immer 1

Verfasst: So Apr 27, 2014 11:22 am
von sunny
hi,

ich bin ganz neu hier und habe mich angemeldet, weil ich mit einem riesigen Problem (zumindest für ;)) nicht weiterkomme... ich versuche, um morgen bei einer Übung nicht durchzufallen, ein Programm zu schreiben, dass 2 werte einliest und aus diesen den cosh berechnet. Mein Problem: egal was ich eingebe, das Ergebnis ist immer 1.

Da ich schon seit fast 2 Tagen nicht wirklich geschlafen habe und vermutlich schon verwirrt bin, sollte ich Euch vermutlich die gesamte Angabe zur Verfügung stellen:

Min A
-Programmieren Sie eine Funktion long readNumber() die eine ganze Zahl von der Tastatur einliest und zurückgibt.
-Schreiben Sie eine Funktion long factorial() die die Fakultät einer ganzen Zahl berechnet und zurückliefert. Der Rückgabewert der Funktion bei negativen Argumenten num soll 0 betragen.
Min B
-Gegeben ist die Taylorentwicklung der Funktion cosh(x):

cosh(x)= Summe von i=0 bis unendlich von 1/(2*i)! * x^(2i)

Schreiben Sie die Funktion double my_cosh(double x, long n) die an der Stelle x die Taylorentwicklung mit n Gliedern auswertet und zurückgibt. -Implementieren Sie ein C- Programm, das zur Eingabe des Argumentwerts x und der Ordnung n auffordert, diese Daten einliest, dann den genauen Wert (erhalten über die Funktionen cosh der Mathematikbibliothek) und den Wert der Näherung ausgibt.
-Berechnen Sie weiter für die Taylorentwicklung der Ordnung 2 bis 7 die Differenzen zum genauen Wert und geben Sie diese aus


Im Anhang lade ich das Programm hoch.

Vielen, vielen, vielen Dank für Eure Hilfe :)
sunny

Re: Ergebnis ist immer 1

Verfasst: So Apr 27, 2014 11:53 am
von cloidnerux
Hi und Willkommen im Forum :D
ich bin ganz neu hier und habe mich angemeldet, weil ich mit einem riesigen Problem (zumindest für ;)) nicht weiterkomme...
Ein Problem ist diese Zeile:

Code: Alles auswählen

numerator = pow(x,(2*i));
Du definierst x selber, weißt x aber nie etwas zu. Damit wird diese Zeile immer 0 ergeben.

Code: Alles auswählen

zwischen = numerator / denominator;
0 geteilt durch irgendwas ist immer 0, daher ergibt sich hier nix, das überhaupt 1 zurück gegeben wird, wundert mich.

Anstatt x sollte es glaube ich Numberx heißen.

Dann ist folgende Iteration:

Code: Alles auswählen

for(i=0; i <= readNumber; i++)
readNumber+1 lang. Hier sollte ein < statt dem <= hin.


Deine Aufgabe sagt, dass du eine Funktion "long factorial()" programmieren sollst, deine Funktion gibt aber einen double zurück:

Code: Alles auswählen

double factorial(long readNumber)
Und bitte vermeide den rekursiven Algorithmus. Der ist nicht nur langsamer, sondern wird auch dein Programm abstürzen lassen für größere Eingaben.

Code: Alles auswählen

c = Numberx();
c ist vom typ long, Numberx() gibt ein double zurück, hier solltest du nachbessern.

Re: Ergebnis ist immer 1

Verfasst: So Apr 27, 2014 2:17 pm
von sunny
Vielen Dank, dass du dir die Mühe gemacht hast das komplette file und die Angabe zu lesen :)

Bei den vielen Fehlern wundert es mich nun nicht mehr warum das Programm einfach nicht so wollte wie ich.

Nochmals Danke für die Korrektur. :D