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;
}
}
}
Taiyou escribió:Siempre puedes crear una variable a la que asignar el valor a devolver en cada caso y al final poner return variable;
Taiyou
keo01 escribió:la identacion se ha ido al carajo al meterlo en la cita.
case 2:
return ( ( bisiesto(any) && dia<=29 ) || dia<=28 );
break;
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;
}
}
}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;
}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;
}
keo01 escribió: no concia lo de :
return (dia <= 30);
que supongo que devolvera 1 si se cumple y 0 si no. De todas formas no acabo de ver claro el mecanismo por lo que esto ocurre, asi que me lo apunto para buscarlo.
)lo de :
int dmax = bisiesto(any) ? 29 : 28;
tengo un vago recuerdo de como funcionaba, pero creo que no lo voy a usar por que en clase todavia no lo han explicado y ya seria demasiada sobrada
int dmax;
if (bisiesto(any)
dmax = 29;
else
dmax = 28;
De todas formas veo que queda mas elegante hacerlo con ifs que con el swich...
Ferdy escribió:Sobre if vs. switch, hace tiempo enseñé que SI HAY DIFERENCIAS, y bastante interesantes a veces... en un mismo hilo de por aquí... alquien quería usar switch's con cadenas de caracteres... si lo encontrais, echadle un vistazo.