Thema anzeigen : Globale var func eingabe in C


cycoass
kleines problem ! :: ==>> beispielscript
#include <stdio.h>
#include <math.h>
#define bda 4.0
#define mgdca 1.0
double y_ys_y2s (double x ,/*prototyp*/
double h ,
double * ,
double *) ; /* "Prototyp" der Funktion y_ys_y2s */
double f_von_x (double) ;
double indouble (char *) ;
main ()
{
double xanf , xend , delta_x ,x ,y ,ys ,y2s;
printf ("Berechnung einer Wertetabelle und der ersten beiden\n") ;
printf ("Ableitungen fuer eine spezielle Funktion y = f(x)\n") ;
printf ("===================================================\n\n") ;
xanf = indouble ("Untere Grenze fuer Wertetabelle: Xanf = ") ;
xend = indouble ("Obere Grenze fuer Wertetabelle: Xend = ") ;
delta_x = indouble ("Schrittweite fuer Wertetabelle: Delta_X = ") ;
printf ("\n x y") ;
printf (" y’ y’’\n\n") ;
x = xanf ;
while (x <= xend + delta_x / 100.)
{
y = y_ys_y2s (x , delta_x / 1000.0 , &ys , &y2s) ;
printf ("%16.6f%16.6f%16.6f%16.6f\n",x ,y ,ys ,y2s) ;
x =x +delta_x ;
delta_x *4 ;
}
return 0 ;
}
double y_ys_y2s (double x , double h , double *ys , double *y2s)
{
Oben habe ich einen prototyp definiert
aber wieso muss ich das nach "return 0;"
definieren ?? oder ist es um locale var zu definieren ? <IMG SRC="smilies/confused.gif" border="0"> <IMG SRC="smilies/confused.gif" border="0">

canXun
Hä? Du meinst, warum der return nach dem Prototypen kommen muss? Du weisst was ein Prototyp is oder?

Ich verstehen deine Deutsch nich <IMG SRC="smilies/smile.gif" border="0"> Das einzige was ich dir jetz sagen kann:

Wenn die Funktion aufgerufen wird, bevor sie überhaupt geschrieben wurde, braucht man einen Prototypen, damit der Name bekannt ist. Und der return gehört zu einer Funktion...


<IMG SRC="smilies/confused.gif" border="0">

cycoass
ich denke einen prototyp ist was es heisst
ehrlich gesagt habe ich mich keine gedanken darüber gemacht ! wie einen auto prototyp !?
auf jedenfall ich rede von dem abschn. nach dem return 0;
dann kommt double y_ys_usw... (double x,double n usw.. )
und das ==&gt; double y , yr , yl ;
y = f_von_x (x) ;
yr = f_von_x (x + h) ;
yl = f_von_x (x - h) ;
*ys = (yr - yl) / (2.0 * h) ;
*y2s =(yr -2.0 *y +yl)/(h *h);
return y ;
}

wieso kommt das denn ? return y;
usw.. ???
und thankx fur die antwort egal ob du verstehst ist cool ! <IMG SRC="smilies/claps.gif" border="0">

<FONT COLOR="#a62a2a" SIZE="1">[ 06. Mai 2002 20:52: Beitrag 1 mal editiert, zuletzt von HUWAWA ]</font>

fmj
return 0;
}

gehört noch zu main. Danach kommt deine komisch benannte Funktion "double y_ys_y2s (double x , double h , double *ys , double *y2s)" (atomrofl <IMG SRC="smilies/biggrin.gif" border="0">). Weil du die Funktion nach ihrem Aufruf erst Initialisiert, musst du einen Prototypen verwenden, der sozusagen "Hier kommt noch was" meldet.

Ich hoffe du verstehst was ich meine, sonst male ich ein Bild davon *g* <IMG SRC="smilies/biggrin.gif" border="0">

powerGFX
wenn man eine Funktion/Prototype gestaltet, die nicht vom Typ Void ist, dann muss ein Rückgabewert erfolgen, deshalb return x ... und wie du siehst, ist der Prototyp ein Double, also eine Fließkommazahl, demnach müsstest du auch eine solche zurückgeben, also return 0.0;, aber wegen der internen Typenumwandlung dürfte return 0; auch funktionieren ...

<FONT COLOR="#a62a2a" SIZE="1">[ 07. Mai 2002 06:41: Beitrag 1 mal editiert, zuletzt von powerGFX ]</font>

cycoass
alles klar fmj jetzt versteh ich !!
<IMG SRC="smilies/cwm40.gif" border="0">
thanks hier einen link als belohnung <IMG SRC="smilies/evilgrin1.gif" border="0"> http://www.neworder.box.sk/showme.php3?id=6554 <IMG SRC="smilies/ylsuper.gif" border="0"> <IMG SRC="smilies/smhair2.gif" border="0">

fmj
na wunderbar <IMG SRC="smilies/biggrin.gif" border="0">