Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: oxi12pek en 5 Noviembre 2012, 16:35 pm



Título: Problema con variables puntero
Publicado por: oxi12pek en 5 Noviembre 2012, 16:35 pm
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 !!


Título: Re: Problema con variables puntero
Publicado por: rir3760 en 5 Noviembre 2012, 16:46 pm
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


Título: Re: Problema con variables puntero
Publicado por: BatchianoISpyxolo en 5 Noviembre 2012, 16:48 pm
Código
  1. #include <stdio.h>
  2. void avg_sum(double a[],int n,double *avg, double *sum)
  3.  {
  4.  int i;
  5.  
  6.  *sum = 0;
  7.  
  8.  for(i=0;i<n;i++) *sum+=a[i];
  9.  *avg=(*sum/n);
  10.  }
  11.  
  12. int main(void)
  13. {
  14.  double A[]={1,2,3,4,5,6.6,7.7,88.8,1,4},x,y;
  15.  int j=10;
  16.  
  17.  avg_sum(A,j,&x,&y);
  18.  printf("Suma total del array: %.2f\n",y);
  19.  printf("Promedio del array: %.2f\n",x);
  20. }

También faltaba indexar el array de doubles.


Título: Re: Problema con variables puntero
Publicado por: oxi12pek en 5 Noviembre 2012, 16:50 pm
Y porque tengo que inicializar y??? No lo veo claro.


Título: Re: Problema con variables puntero
Publicado por: BatchianoISpyxolo en 5 Noviembre 2012, 16:59 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.


Título: Re: Problema con variables puntero
Publicado por: rir3760 en 5 Noviembre 2012, 17:11 pm
También faltaba indexar el array de doubles.
Esa operacion:
Código
  1. *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


Título: Re: Problema con variables puntero
Publicado por: oxi12pek en 5 Noviembre 2012, 17:18 pm
Vale. Ahora lo veo. Muchas gracias por tomarte un tiempo en contestar. Me has ayudado mucho.
SALUDOS


Título: Re: Problema con variables puntero
Publicado por: BatchianoISpyxolo en 5 Noviembre 2012, 17:26 pm
Esa operacion:
Código
  1. *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