Test Foro de elhacker.net SMF 2.1

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
#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.
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
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.
Título: Re: Problema con variables puntero
Publicado por: rir3760 en 5 Noviembre 2012, 17:11 PM
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
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
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