Tengo el siguiente ejercicio de funciones.
4) Definir una función que reciba como parámetro un arreglo de enteros (cuyo tamaño se desconoce, termina en 0) y que retorne la longitud promedio de las secuencias de números pares consecutivos.
Ej: En el arreglo a={1, 3, 2, 4, 16, 5, 2, 9, -4, 10, 22, 8, 14, 11, 39, 4, 63, 12, 60, 0}; se encuentran las secuencias (2, 4, 16) de longitud 3, (2) de longitud 1, (-4, 10, 22, 8, 14) de longitud 5, (4) de longitud 1 y (12, 60) de longitud 2.
La función retorna 2.4 que es la longitud promedio de las 5 secuencias de números pares consecutivos (3+1+5+1+2=12/5=2.4)
Les adjunto mi codigo
Código
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 1000 void CARGA(int arreglo[N]); double PROMEDIO(int arreglo[N]); int main() { int arreglo[N]; CARGA(arreglo); return 0; } void CARGA(int arreglo[N]) ///CARGA DEL ARREGLO { int i=0,numerin; do { if (numerin!=0) { arreglo[i]=numerin; i++; } } while (numerin!=0 && i<N); arreglo[i]=0; } double PROMEDIO(int arreglo[N]) { int i=0,suma=0,longitud=0,secuencia=0,bandera=0; double promedion=0; for (i=0;arreglo[i]!=0;i++) { if (arreglo[i]%2==0) ///SI ES PAR { longitud++; ///LONGITUD DE LA SECUENCIA if (bandera==0) { secuencia++; bandera=1; } } else ///SI NO ES PAR { bandera=0; suma=suma+longitud; longitud=0; } } promedion=(double)suma/secuencia; return promedion; }
En teoria me tendria que dar 2.4 pero me da 2.0
Evalue que habia en la variable suma y habia 10 en vez de haber 12.
El numero de secuencias por lo que veo, lo calcule bien ya que dio el mismo : 5.
Entonces de alguna forma algo le estoy pifiando con la variable suma=suma+longitud que no me calcula bien, pero no se que es. Alguna idea?.Gracias de antemano