Witam, mam do zrealizowania pewne zadanie. Jest on dość błahe ale jestem na razie na początkowym etapie poznawania języka C. Mianowice chodzi o napisanie programu liczącego pierwiastki równania kwadratowego. Delta oraz pierwiastki mają być obliczane w funkcjach które uruchamiane będą za pomocą wskaźników funkcji. Poniżej zamieszczam kod - funkcja "roots" nie jest jeszcze skończona dla wszystkich przypadków:
#include <stdio.h>
#include <math.h>
float delta(float a, float b, float c)
{
return(b*b-4*a*c);
}
float roots(float a, float b, float del)
{
if(del>0)
{
return (-b-sqrt(del))/(2*a);
}
}
int main()
{
float a,b,c;
float (*pFUN)(float a, float b, float c);
printf("Podaj wspolczynniki rownania kwadratowego:\n");
printf("a = ");
scanf("%f",&a);
printf("b = ");
scanf("%f",&b);
printf("c = ");
scanf("%f",&c);
pFUN=delta;
printf("Delta: %f",pFUN(a,b,c));
//pFUN=roots;
//printf("Pierwiastek to: %f",pFUN(a,b,c));
}
I tutaj pojawia się moje pytanie. Czy jest jakaś możliwość aby argumentem zakomentowanego wskazania na funkcje roots
był rezultat wskazania na funkcje delta
(bez deklaracji dodatkowych wskaźników czy zmiennych):
printf("Pierwiastek to: %f",pFUN(a,b,pFUN(a,b,c)));
--> gdzie pFUN(a,b,c)
to rezultat pFUN=delta;
Rozumiem że mógłbym to zrobić deklarując w funkcji main dodatkową zmienną np.:
float del;
pFUN=delta;
del = pFUN(a,b,c);
i finalnie:
pFUN=roots;
printf("Pierwiastek to: %f",pFUN(a,b,pFUN(a,b,del)));
ale chciałbym się dowiedzieć czy można to zrobić w sposób który opisałem wcześniej bez deklaracji zmiennej i przy wykorzystaniu tylko jednego wskaźnika tj. pFUN?