[ Foro de C ]

Funciones en c y quiero sumar un dia

29-Sep-2020 22:42
Invitado (nicole)
1 Respuestas

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;
}


01-Oct-2020 18:49
Cristian Pablo Fusaro (+1)

¿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.)