Diferencia entre revisiones de «Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio3»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con «<font size=4 color=red> Volver</font>»)
 
 
(Una revisión intermedia por el mismo usuario no mostrado)
Línea 1: Línea 1:
 +
{{tip|Observa:
 +
*La función '''''rand''''' me retorna un valor aleatorio entre dos valores facilitados
 +
*Mira lo de año bisiesto (que sea divisible para 4 y que no lo sea para 100 a no ser que lo sea por 400).
 +
*Uso una variable para informar un poco del tipo de error
 +
*Importante el break en un case, revisa la teoría, cuando hay una coincidencia ejecuta todos los case hasta que encuentra un break
 +
*Observa como se concatenan cadenas con el '''''.''''', no se puede concatenar con +, por que es un operador aritmético e inmediatamente convertiría los valores a numéricos.
 +
}}
 +
 +
 +
<source lang=php>
 +
<?php
 +
        $dia = rand(1, 35);
 +
        $mes = rand(1, 14);
 +
        $y = rand(1, 3000);
 +
/*Para probar pon valores explícitos en lugar de aleatorios
 +
        $dia = 29;
 +
        $mes = 2;
 +
        $y = 2005;
 +
*/
 +
        //Variable para controlar error en la fecha
 +
        $error = false;
 +
       
 +
        //Variable para ver si año es bisiesto
 +
        $bisiesto = (($y%4==0) && (($y%100!=0)||($y%400==0)));
 +
       
 +
        //Construimos la fecha en una cadena
 +
        $fecha = $dia."/".$mes."/"."$y";
 +
       
 +
        switch ($mes){
 +
            //Meses de 31 días
 +
            case 1:
 +
            case 3:
 +
            case 5:
 +
            case 7:
 +
            case 8:
 +
            case 10:
 +
            case 12:
 +
                if ($dia>31)
 +
                    $error ="día";
 +
                break;
 +
            //Meses de 30 días   
 +
            case 4:
 +
            case 5:
 +
            case 9:
 +
            case 11:
 +
                if ($dia>30)
 +
                    $error ="día";
 +
                break;
 +
            case 2:
 +
                if ($bisiesto == true){
 +
                    if ($dia>29)
 +
                        $error="día";
 +
                }else
 +
                    if ($dia>28)
 +
                        $error="día en febrero en mes no bisiesto";
 +
                break;
 +
            default:
 +
                $error="mes";
 +
        }
 +
        if ($error)
 +
            echo "La fecha $fecha es incorrecta en $error<br />";
 +
        else
 +
            echo "La fecha $fecha es correcta<br />";
 +
        ?>
 +
</source>
 +
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/B2T1/ejercicios | Volver]]</font>
 
<font size=4 color=red>[[Usuario:ManuelRomero/NewPHP/B2T1/ejercicios | Volver]]</font>

Última revisión de 11:07 29 oct 2017

Icon present.gif
Tip: Observa:
  • La función rand me retorna un valor aleatorio entre dos valores facilitados
  • Mira lo de año bisiesto (que sea divisible para 4 y que no lo sea para 100 a no ser que lo sea por 400).
  • Uso una variable para informar un poco del tipo de error
  • Importante el break en un case, revisa la teoría, cuando hay una coincidencia ejecuta todos los case hasta que encuentra un break
  • Observa como se concatenan cadenas con el ., no se puede concatenar con +, por que es un operador aritmético e inmediatamente convertiría los valores a numéricos.



<?php
        $dia = rand(1, 35);
        $mes = rand(1, 14);
        $y = rand(1, 3000);
/*Para probar pon valores explícitos en lugar de aleatorios
        $dia = 29;
        $mes = 2;
        $y = 2005;
*/
        //Variable para controlar error en la fecha
        $error = false;
 
        //Variable para ver si año es bisiesto
        $bisiesto = (($y%4==0) && (($y%100!=0)||($y%400==0)));
 
        //Construimos la fecha en una cadena
        $fecha = $dia."/".$mes."/"."$y";
 
        switch ($mes){
            //Meses de 31 días
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if ($dia>31)
                    $error ="día";
                break;
            //Meses de 30 días    
            case 4:
            case 5:
            case 9:
            case 11:
                if ($dia>30)
                    $error ="día";
                break;
            case 2:
                if ($bisiesto == true){
                    if ($dia>29)
                        $error="día";
                }else
                    if ($dia>28)
                        $error="día en febrero en mes no bisiesto";
                break;
            default:
                $error="mes";
        }
        if ($error)
            echo "La fecha $fecha es incorrecta en $error<br />";
        else
            echo "La fecha $fecha es correcta<br />";
        ?>

Volver