Ergebnis ist immer 1

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
sunny
Beiträge: 2
Registriert: So Apr 27, 2014 10:59 am

Ergebnis ist immer 1

Beitrag von sunny » So Apr 27, 2014 11:22 am

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Ergebnis ist immer 1

Beitrag von cloidnerux » So Apr 27, 2014 11:53 am

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

sunny
Beiträge: 2
Registriert: So Apr 27, 2014 10:59 am

Re: Ergebnis ist immer 1

Beitrag von sunny » So Apr 27, 2014 2:17 pm

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

Antworten