Diferencia entre revisiones de «Usuario:ManuelRomero/NewPHP/Ejercicios/Ejercicio3»
De WikiEducator
(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 12:07 29 oct 2017
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 />"; ?>