ja Hallo ertsmal.......
ich suche dringend rat......
wir haben da so eine aufgabe bekommen, wir sollen anhand des newtonschen verfahren nullstellen eines graphen ermitteln......ich hab das programm fast fertig hab nur noch 3 warnings......da es sich bei diesen warnings leider um zeigerangelegenheiten handelt bin ich aufgeschmissen ich hoffe dass mir einer hlefen kann.....
code folgt
das ist dann mal der code ich hofffe nicht zu unübersichtlich;-)
nun zu den warnings.......
Danke schonmal im vorraus und gute nacht noch.....
mfg sfuccma
ich suche dringend rat......
wir haben da so eine aufgabe bekommen, wir sollen anhand des newtonschen verfahren nullstellen eines graphen ermitteln......ich hab das programm fast fertig hab nur noch 3 warnings......da es sich bei diesen warnings leider um zeigerangelegenheiten handelt bin ich aufgeschmissen ich hoffe dass mir einer hlefen kann.....
code folgt
PHP:
#include<stdio.h>
#include<math.h>
#define F_1 "f(x)=cos(x)-x"/*erste funk.*/
#define F_2 "f(x)=(x^3)-x"/*zweite funk.*/
#define F_3 "f(x)=|x|"/*dritte funk*/
#define h 0.001/*naeherngskonstante*/
#define g 8/*stellen nach dem komma*/
double funktion_1 ( double x )
{
return cos(x)-x;
}
double funktion_2 ( double x )
{
return pow(x,3)-x;
}
double funktion_3 ( double x )
{
return fabs(x);
}
double diff ( double (*f)(double), double x )/*finktion zur ermittlung*/
{/*des wertes der ableitung an der stelle x*/
double ergebnis;
ergebnis = ((*f)(x+h)-(*f)(x-h))/(2*h);
return ergebnis;
}
int newton ( double (*f)(double), double (*diff)(double,double), double x )
{/*newtonsche verfahren zur naeherung an die nullstelle*/
int i=1;
double genauigkeit = pow(10,-1*g);
double wert;
do
{
wert = f(x);
if ( diff(f(x),x) == 0 )
return -1;
x = x - ((f(x))/diff(f(x),x));
printf("\n%d. Iterartion = %.8lf",i,x);
i++;
} while ( fabs(wert-(f(x))) > genauigkeit );
return i;
}/*rueckgabe anzahl der iterationen*/
int main()
{
double x,startwert;
int check, wahl,error,iteration;
printf("\nWelche Funktion soll nach Nullstellen ntersucht werden?");
printf("\n ( 1 ) %s",F_1);
printf("\n ( 2 ) %s",F_2);
printf("\n ( 3 ) %s",F_3);
printf("\nBitte waehlen Sie :");
do
{
error=0;
check=scanf("%d",&wahl);
if(check!=1 || wahl > 3 || wahl < 1)
{
printf("\nFalsche Eingabe Bitte neu :");
error=1;
}
} while (getchar()!='\n' || error==1);
printf("\n\nBitte geben Sie den Startwert ein >>> ");
do
{
error=0;
check=scanf("%lf",&startwert);
if(check!=1)
{
printf("\nFalsche Eingabe Bitte neu >>> ");
error=1;
}
} while(getchar()!='\n' || error==1);
switch(wahl)
{
case 1:
printf("\n\n%s wird jetzt untersucht",F_1);
iteration = newton(funktion_1,diff,startwert);
if(iteration<0)
return -1;
printf("\n%d Iterationen durchgefuehrt,",iteration-1);
printf("\nNullestelle liegt bei x = %.8lf",startwert);
break;
case 2:
printf("\n\n%s wird jetzt untersucht",F_2);
iteration = newton(funktion_2,diff,startwert);
if(iteration<0)
return -1;
printf("\n%d Iterationen durchgefuehrt,",iteration-1);
printf("\nNullestelle liegt bei x = %.8lf",startwert);
break;
case 3:
printf("\n\n%s wird jetzt untersucht",F_3);
iteration = newton(funktion_3,diff,startwert);
if(iteration<0)
return -1;
printf("\n%d Iterationen durchgefuehrt,",iteration-1);
printf("\nNullestelle liegt bei x = %.8lf",startwert);
break;
}
return 0;
}
das ist dann mal der code ich hofffe nicht zu unübersichtlich;-)
nun zu den warnings.......
HTML:
C:\Users\admin\Documents\prog\prak06\newton.c||In function `main':|
C:\Users\admin\Documents\prog\prak06\newton.c|94|warning: passing arg 2 of `newton' from incompatible pointer type|
C:\Users\admin\Documents\prog\prak06\newton.c|102|warning: passing arg 2 of `newton' from incompatible pointer type|
C:\Users\admin\Documents\prog\prak06\newton.c|110|warning: passing arg 2 of `newton' from incompatible pointer type|
||=== Build finished: 0 errors, 3 warnings ===|
Danke schonmal im vorraus und gute nacht noch.....
mfg sfuccma