Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Calculo incorrecto de maximo,minimo y promedio en arreglo

Estas en el tema de Calculo incorrecto de maximo,minimo y promedio en arreglo en el foro de PHP en Foros del Web. Hola, estoy haciendo un script en php que lee un archivo csv y toma los valores de mas a la derecha de cada linea y ...
  #1 (permalink)  
Antiguo 09/03/2014, 15:59
 
Fecha de Ingreso: abril-2010
Mensajes: 26
Antigüedad: 14 años
Puntos: 0
Calculo incorrecto de maximo,minimo y promedio en arreglo

Hola, estoy haciendo un script en php que lee un archivo csv y toma los valores de mas a la derecha de cada linea y guardo estos valores en un arreglo, después saco el máximo, mínimo y promedio de los valores que quedaron almacenados en el arreglo, lo raro es que este script me funciona bien con ciertos archivos pero con otros arroja valores incorrectos, les dejo el script en php y dos archivos para probar la ejecución , con el archivo 8.csv el calculo del máximo, mínimo y promedio es correcto pero con el archivo 1.csv es incorrecto, la única diferencia que veo en estos archivos es que el archivo 1.csv tiene muchos mas datos que el 8.csv pero no veo mas diferencias que esas, aahhh en el script ignoro si es que hubiera los valores -3000 porque ese valor no representa nada.

Acá les dejo el link para descargar el script y los archivos.

https://www.dropbox.com/s/y4vpjm6086rj3s3/script.zip

Desde ya muchas gracias.

Saludos.
  #2 (permalink)  
Antiguo 10/03/2014, 06:58
 
Fecha de Ingreso: abril-2010
Mensajes: 26
Antigüedad: 14 años
Puntos: 0
Respuesta: Calculo incorrecto de maximo,minimo y promedio en arreglo

Aqui les dejo el script:

Código:
<?php
$variable2=file("1.csv");
$i=0;
foreach($variable2 as $var){
   if($i==0){
      $i++;
   }else{
      $datos=explode(",",$var);
      $valor=$datos[count($datos)-1];
      if($valor!= -3000){
         $todos[$i-1]=$valor;
         $i++;
      }
   }
}

$promedio=array_sum($todos) / count($todos);
$maximo=max($todos);
$minimo=min($todos);
echo "MAXIMO = ".$maximo." MINIMO = ".$minimo." PROMEDIO = ".$promedizo;

?>
Y una parte del archivo que lee (el original tiene mas de 60.000 lineas):

Código:
OBJECTID,pointid,grid_code,potrero_ID,MOD13Q1.A2
7300.0,7300.0,1.0,1,6431
7498.0,7498.0,1.0,1,6684
7499.0,7499.0,1.0,1,6431
7500.0,7500.0,1.0,1,6431
7501.0,7501.0,1.0,1,6431
7502.0,7502.0,1.0,1,6431
7503.0,7503.0,1.0,1,6431
7504.0,7504.0,1.0,1,6304
7697.0,7697.0,1.0,1,6734
7698.0,7698.0,1.0,1,6734
7699.0,7699.0,1.0,1,6127
7700.0,7700.0,1.0,1,6127
Valores esperados:

Maximo: 9307
Minimo: -650
Promedio: 6555,211347

Valores que entrega el script:

Maximo: 999
Minimo: -104
Promedio: 6555,3296310272

Saludos.
  #3 (permalink)  
Antiguo 10/03/2014, 08:09
 
Fecha de Ingreso: abril-2010
Mensajes: 26
Antigüedad: 14 años
Puntos: 0
Respuesta: Calculo incorrecto de maximo,minimo y promedio en arreglo

Ya encontre cual era el problema, lo solucione aplicando la funcion intval asi:

$valor=intval($datos[count($datos)-1]);

Etiquetas: arreglo, calculo, incorrecto, promedio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:02.