[ Foro de C ]
Dejo mi codigo por aca, el bucle do while nunca termina y no para de preguntarme por año, dia y mes :(
#include <stdio.h>
int esFechaValida (int, int, int);
int cantidadDiasDelMes (int, int);
int bisiesto (int);
int main()
{
int dia, mes, anio, cdm;
int diafinal, mesfinal, aniofinal;
do
{
printf("Ingrese un anio:\n");
scanf("%d", &anio);
printf("Ingrese un mes:\n");
scanf("%d", &mes);
printf("Ingrese un dia:\n");
scanf("%d", &dia);
}while(esFechaValida!=1);
diafinal = dia + 1;
mesfinal = mes;
aniofinal = anio;
if(diafinal>cantidadDiasDelMes)
{
diafinal-=cantidadDiasDelMes(mes, anio);
mesfinal++;
if(mesfinal>12)
{
mesfinal=1;
aniofinal++;
}
}
printf("%d%d%d","mas un dia es" "%d%d%d", dia, mes, anio, diafinal, mesfinal, aniofinal);
}
int esFechaValida(int dia, int mes, int anio)
{
if (anio>=1582)
{
if(mes>=1 && mes <=12)
{
if(dia>=1 && dia<=cantidadDiasDelMes(mes, anio))
return 1;
}
}
else
return 0;
}
int cantidadDiasDelMes(int mes, int anio)
{
int cantidadDiasDelMes;
if(mes==4 || mes==6 || mes==9 || mes==11)
cantidadDiasDelMes=30;
if(mes==2)
cantidadDiasDelMes=28+bisiesto(anio);
else
cantidadDiasDelMes=31;
return cantidadDiasDelMes;
}
int bisiesto(int anio)
{
if(anio%4==0 && anio%100==0 || anio%400==0)
return 1;
else
return 0;
}
¿Intentaste compilar tu código?...
El primer aviso que tira el compilador es en la línea:
}while(esFechaValida!=1);
Allí usás "esFechaValida" como si fuera una variable, pero "esFechaValida" es una función que requiere 3 argumentos). Según tu declaración:
int esFechaValida(int dia, int mes, int anio)
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)