Duda en ejercicio

1392 visitas 10 respuestas

Muy buenas, acá está el pesado de nuevo jajaja Bueno a ver, que en mi rutinario aprendizaje de PHP me salio un ejercicio el cual me quedo a la mitad y llevo todo el día dándole vueltas y no me aclaro. Lógicamente no quiero, ni mucho menos, que me digan como se hace, si no como puedo hacer para buscarle la respuesta, que tengo que mirar, en que tengo que fijarme, etc. Os dejo el enunciado:

En este ejercicio ejercicio24.php trataremos de crear una tabla como la anterior, esta vez de una sola fila y seis columnas, conteniendo cada celda un número aleatorio comprendido entre 1 y 49 en la que habremos de evitar la posibilidad de que un número se repita dos veces (podría ser una forma de rellenar la primitiva).

Para ello te sugerimos que guardes en un array los valores de los números aleatorios que se van generando y que, antes de guardar cada uno de ellos, se ejecute un bucle que compruebe si entre los registrados ya existe un valor igual al obtenido. Si no existiera ese valor se guardaría el dato, en caso contrario se repetiría la extracción.

Hasta ahí bien. Lo que yo hice fue principalmente hacer la tabla, eso salio, pero a la hora de guardar en un ARRAY el número aleatorio me pierdo, porque yo creo que lo guardo pero no se como compararlo, os dejo el código. Primero, como dije, hice la tabla para hacer esa parte bien y ahora estaba probando aparte lo del array, para cuando salga implementarlo, lo digo para que quede claro el porqué está separado xD

<?php

mt_srand((double)microtime()*1000000); mt_rand(1,6);

echo "

";
for($col=0; $col<6; $col++){

    echo "<tr><td align='center'>";
    echo "por hacer";
    echo "</td></tr>";

}

while($valor<6){

    $valor++;
    $miarray[]=mt_rand(1,6);

    echo "El valor es: $valor <br>";

    }

?>

A ver si me pueden echar un cable :)

Un saludo y muchísimas gracias por todo.

por jAsK desde España

Registrado desde: 05 Jul 06

Respuestas

0 0

Podrias empezar por hacer un

<?php var_dump($miarray); ?>

Asi verás como se te ha quedado el contenido de la variable, y sabrás por donde seguir tirando para solucionarlo. Me imagino que al comenzar el script $valor vale cero, así que podrias utilizar esa variable para acceder a las posiciones del array tambien

<?php $miarray[$valor]=mt_rand(1,6); ?>

Vete mirando esas dos cosas, que lo tienes ya a punto de caramelo! Saludos!

por lonamiaec desde España

Registrado desde: 10 Nov 06
0 0

Muchísimas gracias lonamiaec ahora lo miro :D !! y te digo.

Un saludo :D

por jAsK desde España

Registrado desde: 05 Jul 06
0 0

No se si voy por buen camino.. pero lo que hice ahora es crear otro array con el mismo valor, para que se asigne automáticamente un número aleatorio, así comparo los 2, si son distintos que imprima el número. El problema me viene cuando los comparo, y hago un print para que los ponga en pantalla, solo me sale un número, y no toda la lista del array como tenía pensado que iba a salir, e ahí mi problema ahora xD, que no se como hacer para que imprima todo el array de golpe !! jajajja

Un saludo y muchas gracias

por jAsK desde España

Registrado desde: 05 Jul 06
0 0

Hombre, para sacar todos los valores de un array hay varias formas, si te da igual q se vea "feo", puedes hacer lo siguiente:

<?php print_r(array_values($miarray)); ?>

Sin embargo, si quieres darle una salida formateada a tu gusto, deberás de recorrer todo el array. Creo que en tu casa contenia 6 elementos, pues sería algo asi:

<?php for($i=0;$i<6;$i++) echo $miarray[$i]; ?>

Con esta ultima opción puedes meter código HTML para darle a la salida la "forma" que mas te guste. Saludos!

por lonamiaec desde España

Registrado desde: 10 Nov 06
0 0

A ver, tu, a la hora de trabajar con un vector, es como si bajo el nombre de una variable, tuvieses muchas más, y las distingues según los índices.

Si haces un print de lo que hay en una posición, solo muestras lo de esa posición, no lo de las otras. No sé si me he explicado bien o no. Si no lo entiendes dímelo, y miro de explicarlo esmerándome un poco más (ahora mismo tengo algo de prisa, perdona)

por Irozga desde España

Registrado desde: 19 Jul 07
0 0

Gracias a los dos de verdad. Pero, sigo perdiéndome xD ... es lo que tiene estar aprendiendo jajaja

Entiendo lo de ver todas las partes de un array... Tengo guardado en cada array un valor aleatorio lo que pasa que no se como hacer que si algún valor se repite en ese array busque otro, así al imprimir todo el array salgan todos los valores sin repetición alguna, como puse del 1 al 6 tienen que salir los 6 números sin que se repita, ese es mi gran problema xD !!

Seguro que cuando saque este ejercicio me hago más listo jajajajjaa

Un saludo y gracias.

PD: Irozga más o menos entiendo lo que me querés decir, lógicamente, si imprimo un valor del array no quiere decir que imprima todos los valores de este no ? Y no pasa nada si tenés prisa, bastante hacés y haceis por ayudarme :)

por jAsK desde España

Registrado desde: 05 Jul 06
0 0

Wenas, ya estoy por aquí otra vez.

A ver, lo que podrías hacer es generar un número, guardarlo y luego, en esa misma iteración del bucle, buscar el mismo valor que acabas de generar en el bucle, si está generas otro.

Para buscar el valor, si estás empezando en temas de programación en general, te recomiento hacer primero una búsqueda secuencial (recorrer toda la matriz y comparar el valor de la posicion en la que estás con el que has generado), si no, o una vez te funcione lo anterior, podrías mirarte la búsqueda dicotómica, que es más eficiente que la secuencial. Aquí tienes una pequeña explicación de cada una.

http://www.lsi.us.es/docencia/asignaturas/ip1/trabajos/Subhtmls/Esquema%20de%20busqueda%20dicot%F3mica.htm

por Irozga desde España

Registrado desde: 19 Jul 07
0 0

Buenas de nuevo :)

A ver que puedo hacer porque no se me ocurre como... xD.

En cuanto a este tipo de programación si soy nuevo, se lo típico,HTML y CSS y algo de Javascript pero tengo que refrescarme ya que no me acuerdo mucho.

Y en cuanto al manual que me pasaste te lo agradezco pero no me entero de nada jajajajaja

Un saludo :)

por jAsK desde España

Registrado desde: 05 Jul 06
0 0

xD

El manual es un ejemplo del algoritmo de la búsqueda dicotómica, te ponen el pseudocódigo y puedes ejecuratlo paso a paso y ver el como iria cambiando el dibujito de la derecha.

Te voi a poner un ejemplo de busqueda secuencial

<?php // Buscaremos el número 4 $encontrado = false; for ($i = 0; $i < sizeof($matriz) && !$encontrado; ++$i) {

for ($j = 0; $j < sizeof($matriz[$i]) && !$encontrado; ++$j) {
    if ($matriz[$i][$j] == 4) $encontrado = true;
}

}

if ($encontrado) echo 'Hay un número 4 en la matriz'; else echo 'NO hay un número 4 en la matriz';

?>

Algo así tendrías que hacer después de generar cada número, para ver si está en la matriz o no. Como ves, se recorre la matriz muchas veces, por eso te comentaba lo de la búsquda dicotómica.

por Irozga desde España

Registrado desde: 19 Jul 07
0 0

Esto te podria servir

<? $pepe = RellenaArray();

echo '

 '.print_r($pepe,true) .' 
';

function RellenaArray() { mt_srand((double)microtime()*1000000); $res = array(); $max = 6; // Valor maximo de numeros que se pueden meter en el array $ini = 0; // Contador que te dice cuantos numero hemos metido while($ini < $max) {

      // Genero un Numero
        $num = mt_rand(1,49);   
        $encontrado = false;
    $s = 0;
        while($s == 0) {
                  for($x=0;$x < count($res); $x++)
                  {
                         if($res[$x] == $num)  {

                             $encontrado = true;
                         }
                  }
               if($encontrado) { 
                      $num = mt_rand(1,49); 
                } else { 
                        $res[] = $num;
                        $s = 1;
                }        
        }

$ini++; }

return $res; }

?>

por gOnDo desde España

Registrado desde: 20 Apr 03