Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Switch. Número mayor o menor que.

Estas en el tema de Switch. Número mayor o menor que. en el foro de PHP en Foros del Web. Hola, este es un ejercicio básico que pulula por la red: de dos números calcular cual es mayor o menor que el otro. He buscado ...
  #1 (permalink)  
Antiguo 13/10/2016, 07:03
Avatar de Iballa  
Fecha de Ingreso: marzo-2013
Mensajes: 107
Antigüedad: 11 años, 1 mes
Puntos: 6
Switch. Número mayor o menor que.

Hola, este es un ejercicio básico que pulula por la red: de dos números calcular cual es mayor o menor que el otro.

He buscado varios ejemplos de este ejercicio pero en todos los casos está resuelto con un simple IF y no cubre las demás posibilidades, que son varias y con un if se anidarian demasiado, así que no encuentro demasiada información para cuando lo quieres hacer más completo, y ya llevo varias horas investigando algunos casos que no me salen.

Mis dudas son:
  • 1- En el caso de que el usuario deje las casillas vacias: Me funciona si dejo las dos casillas vacias, pero si sólo dejo UNA vacia, me dice que : es menor que el X ( el número que haya introducido, y no me respeta el operador “OR”.
  • 2 En el caso de que el usuario no introduzca un número : Tampoco me funciona y me compara las letras, ej: fdfd es mayor que refeefds
-¿Es isNaN la función para decir que no es un número verdad.?
- ¿Está bien planteada la opción de cuando no es un número, es correcta la función(isNaN)?

Código HTML:
<html>
	<body>
          <form action="calculo.php">
                Introduce el primer numero entero: <input type="text" name="valor1" method="get">
                Introduce el segundo numero entero: <input type="text" name="valor2" method="get">
                <input type="submit" value="enviar">
           </form>
	</body>
</html> 

Código PHP:
<?php  
        $valor1 
$_GET['valor1'];
        
$valor2 $_GET['valor2'];
          


           switch (
true) {
               case 
$valor1 $valor2:
                   echo 
$valor1." es mayor que ".$valor2;
                   break;

                   case 
$valor1 $valor2:
                   echo 
$valor1." es menor que ".$valor2;
                   break;

                   case 
$valor1 $valor2:
                   echo 
$valor1." es igual a ".$valor2;
                   break;

                   case empty(
$valor1) || empty($valor2);
                   echo 
"las casillas estan vacias, por favor, introduzca un numero entero";
                   break;

                   case  
is_nan$valor1);
                   echo 
"No es un numero, introduzca un numero entero";
                   break;
               
               default:
                   echo 
" Por favor introduzca un numero valido";
                   break;
           }

        
?>
Agradecería cualquier comentario!!
  #2 (permalink)  
Antiguo 13/10/2016, 08:18
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Switch. Número mayor o menor que.

Yo veo mejor utilizar para este caso estructura

if(){}
elseif (){}
....
else {}

Pero independientemente de la estructura utilizada, también es importante el orden de las condiciones.

Código PHP:
$v1=$_GET['valor1'];
$v2=$_GET['valor2'];

if (!isset(
$v1) OR !isset($v2))
{
    echo 
'Alguna de los datos no existe o es nulo';

elseif (
is_nan($v1))
{
    echo 
$v1.' No es un numero';

elseif (
is_nan($v2)) 
{
    
$v2.' No es un numero';

elseif (
$v1$v2)
{
    echo 
$v1.' Es mayor que '$v2;

elseif (
$v1$v2)
{
    echo 
$v1.' Es menor que '$v2;

elseif (
$v1$v2)
{
    echo 
$v1.' Es igual que '$v2;

__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 13/10/2016, 09:22
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Switch. Número mayor o menor que.

Hola amigo!
Coincido con xerifandtomas, la opción mas viable que yo veo es con condicionales, la anidación no es tanto como comentas (a mi parecer)

También podrías ocupar la funcion is_numeric, sólo q la condición cambiaria.

También como ya mencionaron, es importante el orden de tus condiciones

Podrías tener:

Código PHP:
Ver original
  1. $v1=$_GET['valor1'];
  2. $v2=$_GET['valor2'];
  3.  
  4. if( isset($v1) && isset($v2) ){
  5.   if(is_numeric($v1) && is_numeric($v2) ){
  6.       if($v1 > $v2) echo $v1. " es mayor a ".$v2;
  7.       elseif($v1 < $v2) echo $v1." es menor a ".$v2;
  8.       else echo $v1." es igual a ".$v2;
  9.   }else echo "Ambos valores deben ser numericos";
  10. }else echo "Debe ingresar ambos valores";

Saludos!
  #4 (permalink)  
Antiguo 13/10/2016, 09:30
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Switch. Número mayor o menor que.

Corrijo un par de errores en mi código anterior.

Cosa de las prisas y el móvil.

Código PHP:
Ver original
  1. $v1=$_GET['valor1'];
  2. $v2=$_GET['valor2'];
  3.  
  4. if (!isset($v1) OR !isset($v2))
  5. {
  6.     echo 'Alguna de las variables  no existe o es nulo';
  7. }
  8. elseif (is_nan($v1))
  9. {
  10.     echo $v1.' No es un numero';
  11. }
  12. elseif (is_nan($v2))
  13. {
  14.     echo $v2.' No es un numero';
  15. }
  16. elseif ($v1> $v2)
  17. {
  18.     echo $v1.' Es mayor que '. $v2;
  19. }
  20. elseif ($v1< $v2)
  21. {
  22.     echo $v1.' Es menor que '. $v2;
  23. }
  24. elseif ($v1 == $v2)
  25. {
  26.     echo $v1.' Es igual que '. $v2;
  27. }
__________________
Unset($vida['malRollo']);
  #5 (permalink)  
Antiguo 13/10/2016, 15:19
Avatar de Iballa  
Fecha de Ingreso: marzo-2013
Mensajes: 107
Antigüedad: 11 años, 1 mes
Puntos: 6
Respuesta: Switch. Número mayor o menor que.

Hola, muchas gracias,

xerifandtomas:
tenía entendido que con el switch el flujo del programa se saltaba las que no eran válidas e iva directas al caso concreto válido. Por eso pensaba que no importaba con el switch la posición. Veo que es bastante importante.

german_1441:
No conocía la función is_numeric, gracias, aunque no llego a ver la diferencia con is_nan.

Creo que al final me quedaré con el condicional if, y la manera de hacerlo de german_1441 creo que debe de ser la más eficaz, al ser sólo 10 lineas! Aunque a la hora de la lectura es un poco más engorroso.

Mil Gracias!
  #6 (permalink)  
Antiguo 13/10/2016, 17:04
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Switch. Número mayor o menor que.

Hola amigo!

De acuerdo al manual:
is_nan — Encuentra si un valor no es un número ( devuelve true si el parámetro NO es número )
is_numeric - Comprueba si una variable es un número o un string numérico ( devuelve true si el parámetro es número o una cadena numérica )

El código de xerifandtomas podría quedar a 6 líneas, únicamente lo desgloso así para que se entendiera.

Por otra parte, podrías revisar el nuevo operador nave espacial que trabaja la nueva versión de PHP.

Saludos!
  #7 (permalink)  
Antiguo 14/10/2016, 04:02
Avatar de Iballa  
Fecha de Ingreso: marzo-2013
Mensajes: 107
Antigüedad: 11 años, 1 mes
Puntos: 6
Respuesta: Switch. Número mayor o menor que.

Gracias de nuevo!

Etiquetas: html, mayor, menor, switch
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 16:28.