Error desconocido en mi código

#include  #include  #include  #define Pi 3.14159265358979323846 #define MAX_DATA 20 double Find_GrowthRate(double Data_6hr[MAX_DATA],double Data_24hr[MAX_DATA]); double Find_DoublingTime(double GrowthRate[MAX_DATA]); int main() { int i; double t1; double Data_6hr[MAX_DATA] = {2.3,3.3,4.3,5.3,6.3,7.3,8.3,9.3,10.3,11.3,12.3,13.3,14.3,15.3,16.3,17.3,18.3,19.3,20.3,21.3}; double Data_24hr[MAX_DATA] = {4.2,5.2,6.2,7.2,8.2,9.2,10.2,11.2,12.2,13.2,14.2,15.2,16.2,17.2,18.2,19.2,20.2,21.2,22.2,23.2}; Find_GrowthRate(Data_6hr,Data_24hr); double *GrowthRate; printf("Growth Rates\n"); for(i=0;i<MAX_DATA;i++){ printf("%lf \n",*(GrowthRate+i)); } Find_DoublingTime(GrowthRate); printf("Average Doubling Time"); printf("%lf", t1); return 0; } double Find_GrowthRate(double Data_6hr[MAX_DATA], double Data_24hr[MAX_DATA]) { int i; double *GrowthRate; GrowthRate = (double*)malloc(MAX_DATA*sizeof(double)); for(i=0;i<MAX_DATA;i++){ double PopulationSize_t1 = (Pi * pow((Data_6hr[i]/ 2),2)); printf("%lf\n",PopulationSize_t1); double PopulationSize_t2 = (Pi * pow((Data_24hr[i]/ 2),2)); printf("%lf\n",PopulationSize_t2); double x = ((PopulationSize_t2 - PopulationSize_t1) / PopulationSize_t1); *(GrowthRate+i) = x; } printf("Growth Rates\n"); for(i=0;i<MAX_DATA;i++){ printf("%lf \n",*(GrowthRate+i)); } return GrowthRate; } 

El error que recibo es: –

error: tipos incompatibles al devolver el tipo ‘double *’ pero ‘double se esperaba

Me preguntaba cuál es el cambio en mi código que debo hacer, y si podría mejorar mi código.

La función Find_GrowthRate se declara que tiene el tipo de retorno double

 double Find_GrowthRate(double Data_6hr[MAX_DATA],double Data_24hr[MAX_DATA]); ^^^^^^ 

Sin embargo, en la definición de la función, la función devuelve un objeto de tipo double *

 double Find_GrowthRate(double Data_6hr[MAX_DATA], double Data_24hr[MAX_DATA]) { int i; double *GrowthRate; //... return GrowthRate; ^^^^^^^^^^ } 

Además, hay pérdida de memoria porque la memoria asignada dinámicamente apuntada por el puntero GrowthRate no se libera.

Y en este bucle.

  double *GrowthRate; printf("Growth Rates\n"); for(i=0;i 

se utiliza la variable GrowthRate inicializar que da como resultado un comportamiento indefinido.

El mismo problema existe con la variable no inicializada t1

  double t1; //... printf("%lf", t1);