Hola a todos! Tengo un problemilla con un programa. El programa tiene que calcular toda la suma de los elementos del array y su promedio mediante el uso de punteros y una funcion. Yo he escrito este programa:
void avg_sum(double a[],int n,double *avg, double *sum)
{
int i;
for(i=0;i<n;i++)
*sum+=a;
*avg=(*sum/n);
}
int main(void)
{
double A[]={1,2,3,4,5,6.6,7.7,88.8,1,4},x,y;
int j;
avg_sum(A,j,&x,&y);
printf("Suma total del array: %f\n",y);
printf("Promedio del array: %f\n",x);
}
Me puede explicar alguien que estoy haciendo mal?
Gracias a todos !!
Los errores son dos:
* Al llamar a la función "avg_sum" su segundo argumento debe ser el numero de elementos en el array. Tu pasas el valor de "j" el cual es "no definido" o "basura".
* El valor inicial del acumulador (la variable "y") también es "no definido" o "basura", debes inicializarlo con cero.
Un saludo
#include <stdio.h>
void avg_sum(double a[],int n,double *avg, double *sum)
{
int i;
*sum = 0;
for(i=0;i<n;i++) *sum+=a[i];
*avg=(*sum/n);
}
int main(void)
{
double A[]={1,2,3,4,5,6.6,7.7,88.8,1,4},x,y;
int j=10;
avg_sum(A,j,&x,&y);
printf("Suma total del array: %.2f\n",y);
printf("Promedio del array: %.2f\n",x);
}
También faltaba indexar el array de doubles.
Y porque tengo que inicializar y??? No lo veo claro.
Cita de: oxi12pek en 5 Noviembre 2012, 16:50 PM
Y porque tengo que inicializar y??? No lo veo claro.
O inicializas y o inicializas *sum dentro de la función.
Por que si no el la primera suma harías
sum = basura + a[0]
Porque y/*sum inicialmente tiene un valor basura, no tiene por qué ser 0.
Cita de: BatchianoISpyxolo en 5 Noviembre 2012, 16:48 PMTambién faltaba indexar el array de doubles.
Esa operacion:
*sum += a[i];
Si se encuentra en el primer mensaje pero
oxi12pek no utilizo las etiquetas de código (debería) y por eso en su lugar aparece el texto en cursiva.
Un saludo
Vale. Ahora lo veo. Muchas gracias por tomarte un tiempo en contestar. Me has ayudado mucho.
SALUDOS
Cita de: rir3760 en 5 Noviembre 2012, 17:11 PM
Esa operacion:
*sum += a[i];
Si se encuentra en el primer mensaje pero oxi12pek no utilizo las etiquetas de código (debería) y por eso en su lugar aparece el texto en cursiva.
Un saludo
Toda la razón. xD