[ nnn @ 26.09.2007. 11:46 ] @
Ovako glasi zadatak:
Napisati funkciju tabeliranje koja vrsi tabeliranje funkcije y=f(x) gde su x i y realni brojevi. Funkcija tabeliranje prima sledece argumente: Pokazivac na funkciju f cija se vrednost tabelira i tri realna broja xmin, xmax i dx, gde je dx korak tabeliranja. Funkcija tabeliranje treba da ispise parove x i f(x) za svaku vrednos u zadatom opsegu. Napisati glavni program koji demonstrila koriscenje funkcije tabeliranje na primeru f(x)=xna3+3xna2-2x+1.
Sve mi je jasno sta i kako jedino ne znam kako napraviti pokazivac na funkciju.
Hvala unapred
[ X Files @ 26.09.2007. 12:40 ] @
Na sledećem linku imaš primer kako se koristi pokazivač na funkcije:
http://www.newty.de/fpt/intro.html

To bi trebalo da ti je dovoljno. Započni zadatak, pa ako zaglaviš, postavi kod koji si uradio.
[ nnn @ 26.09.2007. 14:34 ] @
Krenuo sam da pravim za pocetak samo jednostavnu tj spornu verziju samo da napravim da mi radi pokazivac na funkciju

evo
Code:

#include <stdio.h>
#include <stdlib.h>

float *f(float x)
{
float *ff=0;
*ff=x*x*x;
return ff;
}

void tab(float xx,float *f(float))
{
 float *r;
 *r=*f(xx);
 printf("%f",*r);

}
int main()
{
 tab(3,*f(float)  //ovde mi prijavjuje gresku ne mogu funkciju da pozovem
 system("pause");
return 0
;
}
[ X Files @ 26.09.2007. 15:15 ] @
Citat:

float *f(float x)

Ne treba da vraća pointer na float nego float:
float f( float x )

Citat:

float *ff=0;

Opet pointeri... ne trebaju ti za privremene promenljive.

Probaj ovakav kod /totalno netestirano, proveri!!!/

Code:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float f( float x )
{
   return( pow( x, 3 ) + pow( x, 2 ) - 2 * x + 1 );
}

void tab( float (*pt2Func)(float), float xmin, float xmax, float dx )
{
   while( xmax >= xmin )
   {
      printf ( "za x=%.2f, f(%.2f)=%.2f\n", xmin, xmin, pt2Func( xmin )  );
      xmin += dx;
   }
}

int main()
{
   tab( &f, 1.0, 5.0, 0.5 );
   system( "PAUSE" );
   return 0;
}

[ cirra @ 26.09.2007. 19:00 ] @
Evo koda
/* ----------------------------------------------*/
/* Tabeliranje funkcije */
/* */
/*______________________________________________ */

main ()
{
float x,y;
clrscr();
for(x=1;x<=10;x++)
{
y=x*x*x+3*x*x+2*x+1;
printf("%f %f\n",x,y);
getch();
}

Uzete su vrednosti x od 1 do 10 sa porastom 1
Kompajliraj izvrsi javi dali je ok
Pozdrav
[ X Files @ 26.09.2007. 19:38 ] @
Ćiro, da li si uopšte pročitao tekst zadatka?

Napisati funkciju tabeliranje
• Gde ti je funkcija za tabeliranje?

Funkcija tabeliranje prima sledece argumente:
Pokazivac na funkciju f cija se vrednost tabelira i tri realna broja xmin, xmax i dx, gde je dx korak tabeliranja.

• Gde su ti argumenti funkcije za tabeliranje koje zahteva zadatak (Pokazivac na funkciju f, xmin, xmax i dx)?
• Gde ti je funkcija f kako se zahteva u zadatku?

(Pretpostavljam da autor pitanja nije sam sebi smislio zadatak, pa da ga može prekrajati po svom nahođenju)

P.S.
Molim te da zbog preglednosti, kod upisuješ između tag-ova predviđenih za to:

[code]
int main ( int argc, char *argv[] )
{
// ...
return 0;
}
[/code]
--------------------
Tako uokviren (formatizovan) kod će se videti ovako:

Code:

int main ( int argc, char *argv[] )
{
   // ...
   return 0;
}

[ cirra @ 26.09.2007. 21:07 ] @

Evo prostijeg resenja bez pokazivaca na funkciju

#include <stdio.h>
#include <stdlib.h>

int main()
{

double xmin,xmax,dx,x,y;
printf("Unesite vrednosti za \n xmin,xmax,dx odvojeno zarezom\n");
scanf("%lf,%lf,%lf",&xmin,&xmax,&dx);
printf("\n x y\n============================\n");
for(x=xmin;x<=xmax;x+=dx)
{
y=x*x*x+3*x*x-2*x+1;
printf("%10.3f%15.3f\n",x,y);
}
getch();

}
Kompajlirano TC v2.0 i radi
Pozdrav
[ nnn @ 27.09.2007. 10:09 ] @
Hvala svima, naravno da znam da uradim zadatak, jedino pitanje mi je bilo oko pokazivaca na funkciju, ali sam i to savladao, hvala svima
pozz
[ X Files @ 27.09.2007. 14:10 ] @
Citat:

Evo prostijeg resenja bez pokazivaca na funkciju

U zadatku tačno piše šta se traži.
Poenta pomenutog zadatka nije "pojednostavljenje" koda nego u primena pokazivača na funkcije (piše ti uostalom naslovu teme šta je traženo, treba samo pročitati).