Szynka Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 Zdefiniować wskaźnik funkcji double f(double). Zainicjować wskaźnik adresem standardowej funkcji log. Za pomocą wskaźnika wyznaczyć wartości funkcji log w N losowych punktach x, należących do przedziału [-20.0, 20.0], gdzie N - stała. Wyprowadzić wartości x, f(x) na ekran. double loga(N, double (*f)(double)); double fun(); int main() { loga(N, fun); } double loga(N, double (*f)(double) ) { return x; cout << x << endl; } double fun(double x) { x=rand()%40-20; log(x); }cos mi nie łyka :> Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kobe2005 Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 skorod N ma byc stale to moze lepiej uzyc define N costam i wywalic to N z parametrow funkcji..... funkcja loga ma chyba blad bo najpierw zwraca wartosc a potem wyswietla wartosc x . Poza tym co to jest to x nigdzie nie jest zdefiniowany... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Szynka Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 no tak nie napisałem tego N ... ale czemu nie łyka mi nawet definicji wskaźnika ? double (*f)(double));jak zdefiniuje wskaźnik do funkcji to potem moge używać jej jak normlanej funkcji ? double f(){ } ??? #include<conio.h>#include<iostream.h>#include<stdlib.h>#include<math.h>#define N 4int x;double loga(double (*f)(double)); double fun(); int main() { loga(fun); } double loga(double (*f)(double) ) { for(int i=0; i<N; i++) { x=rand()%40-20; cout << log(x)<< endl; }}double fun() { return x; } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
jkotor Opublikowano 14 Stycznia 2006 Zgłoś Opublikowano 14 Stycznia 2006 no tak nie napisałem tego N ... ale czemu nie łyka mi nawet definicji wskaźnika ? double (*f)(double)); Masz 3 nawiasy zamykajace i 2 naw. otwierające, syntax error. jak zdefiniuje wskaźnik do funkcji to potem moge używać jej jak normlanej funkcji ? double f(){ } ??? #include<conio.h>#include<iostream.h>#include<stdlib.h>#include<math.h>#define N 4int x;double loga(double (*f)(double)); double fun(); int main() { loga(fun); } double loga(double (*f)(double) ) { for(int i=0; i<N; i++) { x=rand()%40-20; cout << log(x)<< endl; }}double fun() { return x; } Jeżeli masz np. funkcję która nic nie zwraca i nic nie bierze void func() {}, to możesz sobie zdefiniować do niej wskaźnik f i następnie go zainicjować w sposób void (*f)();f = func;albo to samo w jednym wierszu void (*f)() = func;a wywołanie funkcji poprzez wskaźnik wygląda po prostu tak: (*f)(); Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Szynka Opublikowano 15 Stycznia 2006 Zgłoś Opublikowano 15 Stycznia 2006 #include<stdio.h>#include<stdlib.h>#include<math.h>#define N 5 //ustalenie wartosci stalej Nint los;double x;double (*wsk)(double); //wskaznik na funkcje double f(double)//wsk=log; //inicjacja funkcji losujacychdouble (*a)();double W();int main(){wsk=log;a=W; (*a)(); fflush(stdin);getchar();}double W(){for(int i=0;i<N;i++) { x=rand()%40-20; if(x<0) { while(x<=0) { x=rand()%40-20; } printf("x= %lf, f(x)= %lf\n\n", x,wsk(x)); } else { printf("x= %lf, f(x)= %lf\n\n", x,wsk(x)); //wsk(x) -> wywolanie funkcji standardowej log za pomoca wskaznika } }} czy o to chodzi ?? program działa jak ma działać .. ale czy jest pod wzgledem merytorcznym ok ?? w zadaniu jest napisane losowych punktach x, należących do przedziału [-20.0, 20.0], rozumiem, że to podpucha bo nie istnieje nic takiego jak log(-x) ... x=rand()%40-20;czy ograniczyć x=rand()%20; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Ragnor Opublikowano 15 Stycznia 2006 Zgłoś Opublikowano 15 Stycznia 2006 czy o to chodzi ?? program działa jak ma działać .. ale czy jest pod wzgledem merytorcznym ok ?? w zadaniu jest napisane losowych punktach x, należących do przedziału [-20.0, 20.0], rozumiem, że to podpucha bo nie istnieje nic takiego jak log(-x) ... Dla twej inforamcji podam że np istnieje Ln(-1), Ln(-2) itd (Ln = logarytm naturalny), wystarczy przejśc do liczb urojonych. x=rand()%40-20;czy ograniczyć x=rand()%20; Jak chcesz mieć liczby z przedziału [-20.0,20.0] to coś takiego: x=rand()%41-20;a jak z przedziału [0,20.0]: x=rand()%21;choć wtedy możesz wdepnąc w punkt 0 (choć sznasa na to wynosi 0 :D) i zapewne nie policzysz log(0). Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Szynka Opublikowano 17 Stycznia 2006 Zgłoś Opublikowano 17 Stycznia 2006 zaliozne na 4,5 dzieki za pomoc ... temat close :P Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 18 Stycznia 2006 Zgłoś Opublikowano 18 Stycznia 2006 nie urojonych tylko zespolonych Ragnor :) (przyp. redaktor) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Ragnor Opublikowano 18 Stycznia 2006 Zgłoś Opublikowano 18 Stycznia 2006 nie urojonych tylko zespolonych Ragnor :) (przyp. redaktor)No w sumie racje zespolone powinno być, ale głównie chodzo o 'i' jednostke urojoną ;) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...