Para que todo el mundo lo vea claro:
Esto sería tu función identada:
int data_valida(int dia, int mes, int any)
{
if (dia < 1 || dia > 31 || mes < 1 || mes > 12 || any < 1) {
return 0;
} else {
switch(mes) {
case 4:
case 6:
case 9:
case 11:
if (dia <= 30) {
return 1;
} else {
return 0;
}
break;
case 2:
if (bisiesto(any) == 1) {
if (dia <= 29) {
return 1;
} else {
return 0;
}
} else {
if (dia <= 28) {
return 1;
} else {
return 0;
}
}
break;
default:
return 1;
break;
}
}
}
Imagina qué ocurre con ese código si quitas el switch y no identas más de la cuenta:
int data_valida(int dia, int mes, int any)
{
if (dia < 1 || dia > 31 || mes < 1 || mes > 12 || any < 1) {
return 0;
}
if (mes == 4 || mes == 6 || mes == 9 || mes == 11)
return (dia <= 30);
else if (mes == 2) {
if (bisiesto(any) == 1) {
return (dia <= 29);
} else {
return (dia <= 28);
}
}
return 1;
}
Aún así puedes ir un poco más lejos:
int data_valida(int dia, int mes, int any)
{
if (dia < 1 || dia > 31 || mes < 1 || mes > 12 || any < 1)
return 0;
if (mes == 4 || mes == 6 || mes == 9 || mes == 11)
return (dia <= 30);
else if (mes == 2) {
int dmax = bisiesto(any) ? 29 : 28;
return (dia <= dmax);
}
return 1;
}
Sorprendentemente la nueva función es mucho más fácil de leer que la anterior
- ferdy