| 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 » |