Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/12/2013, 10:15
Avatar de jonni09lo
jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: Fallo en mostrar n pares de array

Código PHP:
Ver original
  1. <?php
  2. //Variables
  3. $tab = array( 4, -5, 5, 7, 1, -8, 9, -10, 4, 15);
  4. $tabPar = array();
  5. $tabImpar = array();
  6. //funcion para saber si es par o impar y sumarlo en el array vacío.
  7. function solucion2 ($tab, &$tabPar, &$tabImpar) {
  8.     for ($i=0; $i < count($tab); $i++) {
  9.         if ($tab[$i] % 2 == 0 ) {
  10.             $tabPar[] = $tab[$i] ;      
  11.         } else {
  12.             $tabImpar[] = $tab[$i];  
  13.         }
  14.     }
  15.     //La funcion devuelve los pares e Impares del array.
  16.     $numTabPar = count($tabPar);
  17.     echo "Par : <br>";
  18.     for ($i=0; $i < $numTabPar; $i++) {
  19.         echo $tabPar[$i] . "<br/>";
  20.     }
  21.    
  22.     $numTabImpar = count($tabImpar);
  23.     echo " Impares : <br>";
  24.     for ($i=0; $i < $numTabImpar; $i++) {
  25.         echo $tabImpar[$i] . "<br/>";
  26.     }
  27. }
  28. //Llamar la funcion
  29. solucion2 ($tab, $tabPar, $tabImpar); ?>

Tienes varios problemillas:

Cuando usas for para trabajar con arrays el limite debe ser menor a la cantidad de elementos del array, no menor o igual

Código PHP:
Ver original
  1. for ($i=0; $i <= count($tab); $i++) {

Por

Código PHP:
Ver original
  1. for ($i=0; $i <= count($tab); $i++) {

Segundo es recomendable que trabajes con arrays separados para saber el contenido de cada uno de ellos ya que pueden tener diferentes longitudes.

Tercero es una pequeña optimización, cuando trabajes con for no coloques un count dentro de este ya que siempre se ejecutará con cada llamada que se haga al for

Edito: Hay un caso adicional. Usaste += para asignar un nuevo valor al array, esto es incorrecto ya que += se usa para sumar valores. En este caso debes de usar = que es para asignación.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.