Hola
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
#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];
printf ("Ingrese una secuencia de numeros: \n"); CARGA(arreglo);
printf ("El promedio es %.2lf",PROMEDIO
(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;
}
}
printf ("\nLa suma es %d",suma
); printf ("\nEl numero de secuencias es %d",secuencia
); 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