PHP - FUNCIÓN BUSCA_EN_VECTOR

   
Vista:

FUNCIÓN BUSCA_EN_VECTOR

Publicado por SILVIA (80 intervenciones) el 06/04/2015 22:50:43
Necesito ayuda con otro ejercicio, en este caso es una función, se trata de implementar la función array_search, es decir, buscar un valor determinado en un array y devolver el índice correspondiente en caso de éxito, sin utilizar dicha función.

El problema es que cuando encuentra el valor en el array, me dice que está en una posición del array que no existe.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function BUSCA_EN_VECTOR ($vector, $item){ // Creamos la función BUSCA_EN_VECTOR a la que le pasamos como parámetro $vector y $item
    for ($i=0; $i<count($vector); $i++){ // Inicialización, condición_bucle, actualización
		if ($vector[$i]==$item){ // $i la posición $i de $vector es igual a $item
			return true; // Devuelve verdadero
        }
	}
	return false; // $i no devuelve falso
}
            // Inicio del código
            $n=rand(1,20); // Damos a $n un valor aleatorio entre 1 y 20
            $vector=array(); // Inicializamos el array
            for ($i=0; $i<=$n; $i++){ // Inicialización, condición_bucle, actualización
                $vector[$i]=rand(1,20); // La posición $i de $vector es igual a un número aleatorio entre 1 y 20
                }
                echo "<pre>";
                print_r($vector); // Mostramos por pantalla $vector
			$NumeroABuscar=rand(1,50); // Damos a $NumeroABuscar un valor aleatorio entre 1 y 50
			if(BUSCA_EN_VECTOR($vector,$NumeroABuscar)){ // Si el número $NumeroABuscar está en $vector
				echo "El numero ".$NumeroABuscar." esta en el vector en la posición $i\n"; // Texto que se mostrará por pantalla si el número está en el vector en la posición $i
			}else{
				echo "El numero ".$NumeroABuscar." NO esta en el vector\n"; // Texto que se mostrará por pantalla si el número no está en el vector
			}

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

FUNCIÓN BUSCA_EN_VECTOR

Publicado por xve (5519 intervenciones) el 07/04/2015 08:35:15
Hola Silvia, pero tu devuelves true o false, no el índice... yo creo que debería de ser algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function BUSCA_EN_VECTOR ($vector, $item){
    for ($i=0; $i<count($vector); $i++){
        if ($vector[$i]==$item){
            return $i;
        }
    }
    return -1;
}
 
....
 
$posicion=BUSCA_EN_VECTOR($vector,$NumeroABuscar);
if($posicion>=0){ // Si el número $NumeroABuscar está en $vector
    echo "El numero ".$NumeroABuscar." esta en el vector en la posición $posicion\n";
}else{
    echo "El numero ".$NumeroABuscar." NO esta en el vector\n";
}
?>

Recuerda que la variable $i, únicamente existe dentro de la función.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FUNCIÓN BUSCA_EN_VECTOR

Publicado por SILVIA (80 intervenciones) el 07/04/2015 22:04:41
xve he probado tu código y no me funciona me da el siguiente error:

Undefined variable: vector (line 17)Undefined variable: NumeroABuscar (line 17)Undefined variable: vector (line 18)Undefined variable: NumeroABuscar (line 18)Undefined variable: NumeroABuscar (line 21).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

FUNCIÓN BUSCA_EN_VECTOR

Publicado por xve (5519 intervenciones) el 07/04/2015 23:20:16
Hola Silvia, yo no te he copiado todo el código, únicamente el que da el error... donde están los puntos suspensivos, falta el resto de tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FUNCIÓN BUSCA_EN_VECTOR

Publicado por SILVIA (80 intervenciones) el 08/04/2015 00:04:47
Gracias, vaya que error más tonto es que es la primera vez en mi vida que doy programación y a veces voy más por inspiración que por otra cosa, tengo la recuperación en Junio, de aqui a entonces espero conseguir acabar de aclararme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar