Problem mit mathematischer Funktion!
-
Halli Hallo
bin jetzt ganz neu hier, also bitte nicht gleich zerreißen.Hab dieses Semester C als Verastaltung und da auch Hausaufgaben. -.-"
Bisher ging es ja noch ganz gut, aber jetzt weiß ich nich mehr wirklich weiter!
Wir sollen nun die Glockenkurve (http://de.wikipedia.org/wiki/Normalverteilung) als C-Funktion wiedergeben/umschreiben. Hier mal die Funktion:
http://upload.wikimedia.org/math/2/4/a/24a8c88de220a0691fd852de62eebf7e.pngSo richtig komm ich da aber nicht weiter!
Folgendes habe ich bisher, hab da jetzt aber mal abgebrochen, weil es total falsch aussieht:#include <stdio.h> #include <math.h> double exp(double c) { if o==0 return "Nicht definiert!"; else c = a*((x-n)/o)*(x-n)/o); } double sqrt(double b) { double b = 2*M_PI; } int main() { float a = -0,5; double x, n, o; printf("bitte x eingeben:"); scanf("%lf \n", &x); printf("bitte Nü eingeben:"); scanf("%lf \n", &n); printf("bitte Omega eingeben:"); scanf("%lf \n", &o); double (*p)(double, double, double); /*Der Zeiger is schwachsinn^^ */ poi=Glocke; if (omega != 0) printf("Das Ergebnis ist: %lf", poi(x, nü, omega)); else printf("Dumm?"); }
Bitte helft mir, würde mich riesig freuen. Danke schonmal im vorraus.
-
^^der code ist doch völliger unsinn, compiled noch nicht mal usw.
such mal bei google nach "normal/gaussian distribution function" filetype:c
-
jau, is totaler quatsch und ich komm da leider auch nicht weiter
und die googlesuche hilft mir jetzt auch nicht weiter!
-
warum benutzt du nicht die exp-funktion, die es schoon gibt (-->math.h)
-
das gleiche hab ich mir gerade auch gedacht^^
habs mal verändert:#include <stdio.h> #include <math.h> double Glocke(double x, double n, double o) { float a = -0.5; double c = 0; c = (exp(a * ((x-n)/o) * ((x-n)/o))) / (o * sqrt(2 * M_PI)); } int main(double c) { double x, n, o; x=0; n=0; o=0; printf("bitte x, Nü und Omega eingeben:"); scanf("%lf %lf %lf", &x, &n, &o); if (o == 0) printf("Nicht definiert!\n"); else printf("Das Ergebnis ist: %lf \n",c ); }
jedoch gibt er nun falsche werte aus! vorallem jedesmal andere werte, obwohl die eingabe stets gleich ist.
-
Du hast bei deinen beiden Beiträgen versucht Funktionen
selbst zu schreiben.
Zu deinem 1. Quelltext hier
Warum rufst du dann diese in "main()" nicht auf
Also hier in diesem Beispiel machen Zeile 4 bis 10 nix
weil du die nicht aufrufst. In deinem anderen Beispiel
sind es noch ein paar Zeilen mehr.Bei c/c++ werden Rückgabewerte aus selbstgeschriebenen
Funktionen über "return()" zurückgegeben.ändere mal Zeile 11 zu:
int main() // das reicht für deine Aufgabe
Dann müsstest du eine Fehlermeldung zu c bekommen.
Das musst du dann anders lösenZu deinem 2. hier
Die gleichen Fehler wie beim 1.
folglich Zeile 4 bis 14 machen in deinem Quelltext nix.MfG f.-th.
-
tun mir leid hab die Reihenfolge deiner Quelltexte verwechselt.
-
Also mal so
#include <stdio.h> #include <math.h> double Glocke(double x, double n, double o) // wo rufst du diese Fkt. auf? { float a = -0.5; double c = 0; c = (exp(a * ((x-n)/o) * ((x-n)/o))) / (o * sqrt(2 * M_PI)); // hier fehlt noch was, da c in diesem Quelltext nur für die beiden Zeilen // hierüber gilt } int main(double c) // nur: int main() { double x, n, o; x=0; n=0; o=0; printf("bitte x, Nü und Omega eingeben:"); scanf("%lf %lf %lf", &x, &n, &o); if (o == 0) printf("Nicht definiert!\n"); else printf("Das Ergebnis ist: %lf \n",c ); }
So die Kommentare sind nicht ganz c-komform nach älteren Normen,
aber viel Compiler kommen damit klar.Du musst also deine grauen Zelle noch ein wenig fordern
Viel Spass