Filippo9669 Temat założony przez niniejszego użytkownika |
Wskaźniki na funkcje » 2017-11-29 01:09:59 Cześć! Mam problem z wskaźnikami na funkcje. Dopiero się ich uczę i postanowiłem napisać krótki kod, obliczający w dwu funkcjach wyróznik trójmianu kwadratowego oraz pierwiastek z niego. Oto kod: #include <iostream> #include <string> #include <cmath>
using namespace std;
double delta( double a, double b, double c ) { return( b * b - 4 * a * c ); }
double sqrtdelta( double a, double b, double c, double( * f2 )( double, double, double ) ) { return sqrt(( * f2 )( a, b, c ) ); }
int main() { double a, b, c; cout << "Funkcja kwadratowa postaci ax^2 + bx + c. "; cout << endl << "Podaj wspolczynniki: " << endl << endl; cout << "Wspolczynnik a: "; cin >> a; cout << "Wspolczynnik b: "; cin >> b; cout << "Wspolczynnik c: "; cin >> c; cout << sqrtdelta( a, b, c, delta ); return 0; }
I tutaj jest moje pytanie: czy istnieje inny sposób, by funkcja sqrtdelta mogła przyjmować tylko jeden argument, mianowicie wartość delty? Oczywiście w wersji: double sqrtdelta( double( * f2 )( double, double, double ) ) { return sqrt(( * f2 ) ); }
program się nie kompilował, ze względu niepoprawną liczbę argumentów. Co mogę zrobić? Przyjmowanie tych samych argumentów w obu tych funkcjach pozbawia sensu korzystanie z wskaźnika do tej funkcji. |
|
pekfos |
» 2017-11-29 01:12:24 I jak by wyglądało użycie tego? |
|
Filippo9669 Temat założony przez niniejszego użytkownika |
» 2017-11-29 01:13:05 co masz na myśli? |
|
pekfos |
» 2017-11-29 01:22:32 Jak chcesz tu coś obliczyć, skoro nie chcesz przekazać parametrów? |
|
Filippo9669 Temat założony przez niniejszego użytkownika |
» 2017-11-29 01:24:25 W taki sposób, że mam obliczoną wartość delty i ją chcę przekazać. Następnie, w tej funkcji sqrtdelta - po prostu obliczyć z niej pierwiastek. |
|
pekfos |
» 2017-11-29 01:30:30 To przekaż tą wartość. Wskaźnik na funkcję nie jest od tego. |
|
Filippo9669 Temat założony przez niniejszego użytkownika |
» 2017-11-29 01:33:32 No dobrze, ale co zrobić w przypadku, gdy jako argument jednej funkcji chcę przyjąć wartość drugiej funkcji? Choćby rozwijając ten kod, że pierwiastki trójmianu kwadratowego mają być obliczane w funkcji do tego stworzonej, która za argument przjmuje wartość pierwiastka z delty, który to jest obliczany w innej funkcji. Co wtedy? |
|
pekfos |
» 2017-11-29 01:35:38 int f(); int g( int );
g( f() ); |
|
« 1 » |