Autor
|
Tema: Problema con variables puntero (Leído 3,152 veces)
|
oxi12pek
Desconectado
Mensajes: 15
|
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 !!
|
|
|
En línea
|
Algun dia lo sere...
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
BatchianoISpyxolo
Desconectado
Mensajes: 166
|
#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.
|
|
|
En línea
|
|
|
|
oxi12pek
Desconectado
Mensajes: 15
|
Y porque tengo que inicializar y??? No lo veo claro.
|
|
|
En línea
|
Algun dia lo sere...
|
|
|
BatchianoISpyxolo
Desconectado
Mensajes: 166
|
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.
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Tambié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
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
oxi12pek
Desconectado
Mensajes: 15
|
Vale. Ahora lo veo. Muchas gracias por tomarte un tiempo en contestar. Me has ayudado mucho. SALUDOS
|
|
|
En línea
|
Algun dia lo sere...
|
|
|
BatchianoISpyxolo
Desconectado
Mensajes: 166
|
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
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Ayuda] Problema un poco sonso al intercambiar un puntero por otro.
Programación C/C++
|
BlackZeroX
|
5
|
3,132
|
13 Febrero 2011, 07:19 am
por BlackZeroX
|
|
|
Problema con puntero láser azul
Electrónica
|
danielpower
|
0
|
3,069
|
9 Febrero 2012, 07:33 am
por danielpower
|
|
|
[BATCH] ¿Como puedo meter variables dentro de variables?
Scripting
|
Meine programmen
|
1
|
4,115
|
24 Marzo 2012, 16:48 pm
por Eleкtro
|
|
|
F1 - Problema con puntero a Función C#
.NET (C#, VB.NET, ASP)
|
Maurice_Lupin
|
0
|
2,173
|
17 Mayo 2012, 16:14 pm
por Maurice_Lupin
|
|
|
Problema Incrementar puntero
Programación C/C++
|
x64core
|
5
|
3,315
|
16 Junio 2012, 20:32 pm
por david_BS
|
|