PHP - programa php

 
Vista:
sin imagen de perfil
Val: 12
Ha disminuido su posición en 64 puestos en PHP (en relación al último mes)
Gráfica de PHP

programa php

Publicado por Jaime (5 intervenciones) el 30/01/2020 14:15:44
Buenas, tengo un problema en un programa de php que me pide lo siguiente:
Crea una página web que pida un número entre 1 y 6. Define un array de 4 posiciones que tenga números aleatorios entre 1 y 6. Tu programa deberá recorrer el array buscando si el número del usuario está o no en el array. Si está deberá decir “Eureka, tu número está en el array” en caso contrario dirá “Lo siento, intento fallido. Inténtelo de nuevo”. Si no introduce número entonces alertará diciendo “Introduzca un número para operar”, se parará y no hará nada.

Lo que tengo hecho del programa es lo siguiente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Tema 4- Tarea 11</title>
</head>
<body>
	<center>
		<form action="#" method="POST">
			Introduce un número: <input type="text" name="numero" placeholder="Entre 1 y 6"><br><br>
			<input type="submit" name="Enviar" value="Probar suerte"><input type="reset" value="borrar">
		</form>
 
 
	<?php
	if (!isset($_POST["Enviar"])) exit(0);
 
	$num=$_POST["numero"];
 
	if (empty($num)) {
		echo "<br><b>Escribe un número!!</b>";
		exit(1);
	}
 
	if ( (($num)<1) || ($num>6))  {
		echo"<br><b>Él número no está entre 1 y 6. Vuélvelo a intentar.</b>";
		exit(1);
	}
 
	$numeros = array(4, 2, 5, 6 );
 
	while ($num <=4) {
 
		 	$numeros[]=mt_rand(1,6);
	}
 
	foreach ($numeros as $indice => $num) {
			echo "$num";
 
 
	}
	if ($num=$numeros) {
		echo "EUREKA ES TU NUMERO";
	}exit(1)
 
 
 
	 ?>
 
	 </center>
 
 
</body>
</html>

Lo que pasa es que no me funciona y estoy desesperado XD. Si alguien me ayudara o me dijera que parte está mal lo agradeceria. Gracias y buen día
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 joel
Val: 2.007
Plata
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

programa php

Publicado por joel (556 intervenciones) el 30/01/2020 15:44:05
Hola Jaime, haber si te sirve este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Tema 4- Tarea 11</title>
</head>
<body>
	<center>
		<form action="#" method="POST">
			Introduce un número: <input type="text" name="numero" placeholder="Entre 1 y 6"><br><br>
			<input type="submit" name="Enviar" value="Probar suerte"><input type="reset" value="borrar">
		</form>
 
 
    <?php
    if (!isset($_POST["Enviar"])) exit(0);
 
    $num=$_POST["numero"];
 
    if (empty($num)) {
        echo "<br><b>Escribe un número!!</b>";
        exit(1);
    }
 
    if ( (($num)<1) || ($num>6))  {
        echo"<br><b>Él número no está entre 1 y 6. Vuélvelo a intentar.</b>";
        exit(1);
    }
 
    $numeros = randomNumbers(1, 6);
 
    if (in_array($num, $numeros)) {
        echo "Eureka, tu número está en el array";
    } else {
        echo "Lo siento, intento fallido. Inténtelo de nuevo";
    }
 
    function randomNumbers($n1, $n2) {
        $numbers = range($n1, $n2);
        shuffle($numbers);
        return array_slice($numbers, 0, 4);
    }
    ?>
 
	 </center>
 
</body>
</html>
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 Julio
Val: 1.292
Plata
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

programa php

Publicado por Julio (392 intervenciones) el 01/02/2020 13:34:43
Hola.

Fíjate en algunas cosas. En primer lugar el siguiente código no termina nunca.

1
2
3
while ($num <=4) {
    $numeros[]=mt_rand(1,6);
}

Si llega a ejecutarlo, fíjate que la condición siempre es cierta. Tu variable $num siempre será menor que 4 y nunca cambiará, por lo que estarás entrando en bucle infinito y tu programa nunca terminará.

Lo que imagino que querrás será algo así:

1
2
3
4
5
6
7
8
$numeros = array(4, 2, 5, 6 );
 
if ( (($num)<1) || ($num>6))  {
    echo"<br><b>Él número no está entre 1 y 6. Vuélvelo a intentar.</b>";
    exit(1);
} else {
    $numeros[]=mt_rand(1,6);
}

De todas formas, con esa instrucción de $numeros[] = mt_rand(1,6) estás haciendo que el array tenga un quinto número, cuando en tu enunciado pone que tenía sólo 4. ¿Para qué quieres añadir un número extra al array?

Por otra parte, fíjate aquí:

1
if ($num=$numeros) {

Estás utilizando un igual para asignar, cuando lo que quieres es comparar si son iguales, por lo que usa == (o también ===) para ello. Además, $numeros es un array y $num es un entero, con lo que esta comparación no es buena. Deberías usar in_array($num, $numeros).

Puedes pasarte por mi blog, Programación Básica, para repasar este tipo de detalles si todavía no los tienes claros. ¡Gracias!



-----------------------------
Aprende la programación desde una perspética básica y simplista en Programación Básica
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