Cita de: amchacon en 5 Enero 2014, 13:28 PM
Comprueba los datos cuando te los introduzca el usuario, después es más lioso:
- Si día es < 1 devuelves un error
- Si mes es < 1 devuelves un error
- Si anyo es < 0 devuelves un error
- Si mes > 12 devuelves un error
- Si dia > dias_del_mes devuelves un error (febrero tendrá 29 días).
- Si anyo != bisiesto, es febrero y es el día 29 devuelves un error-
Eso es, exacto, pero realmente me parece muy recargado meterle tanta cosa para un programa así, me parece que tal y como esta esta bien.
es como decir en el caso de enero, que tiene 31 días:
Código (c) [Seleccionar]
while(fecha.mes == 1 && fecha.dia > 0 && fecha.dia < 32)
{
//instrucciones de ejecucion
//validar registro
//comparar fechas
//determinar si es bisiesto
if(fecha.dia < 0 || fecha.dia > 31)
{
printf("\nError en el registro de fecha, formato incorrecto, intentalo otra vez besta!!\n");
}
}
Ahora, el problema es que practicamente hay que hacer un while para todos los meses, y luego realizar uno para determinar si es bisiesto en el mismo ciclo de febrero, y pues se hace muy tedioso. Claro que se puede resumir a meses que tengan una cantidad de días iguales así como ya has hecho antes, y seguro que si sacas una, sacas todas las apreciaciones para determinar la mecanica del proceso.
Aunque la verdad, yo lo dejaria hasta ahi, esta muy bien hecho...