Estimados,
Serian tan amables de indicarme que error tengo en estos dos programas:
1 - "Calcular fecha siguiente" (Me devuelve la misma fecha siempre)
1 - "Calcular dias entres dos fechas" (Me devuelve un resultado cualquiera)
Desde ya muchas gracias.
Saludos!
Serian tan amables de indicarme que error tengo en estos dos programas:
1 - "Calcular fecha siguiente" (Me devuelve la misma fecha siempre)
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int dia,
mes,
año;
} tFecha;
void calcularFechaSiguiente (tFecha fecha);
int main()
{
system ("color 0a");
tFecha fecha;
printf("Ingrese dia: \n\n");
scanf("%d",&fecha.dia);
printf("\nIngrese mes: \n\n");
scanf("%d",&fecha.mes);
printf("\nIngrese año: \n\n");
scanf("%d",&fecha.año);
calcularFechaSiguiente (fecha);
printf("\nFecha final: %d/%d/%d",fecha.dia,fecha.mes,fecha.año);
return 0;
}
void calcularFechaSiguiente (tFecha fecha)
{
if(fecha.mes == 4 || fecha.mes == 6 || fecha.mes == 9 || fecha.mes == 11)
{
if(fecha.dia == 30)
{
fecha.dia = 1;
fecha.mes++;
}
else
fecha.dia++;
}
if(fecha.mes == 2)
{
if ((fecha.año % 4 == 0) && ((fecha.año % 100 != 0) || (fecha.año % 400 == 0)))
{
if(fecha.dia == 29)
{
fecha.dia = 1;
fecha.mes++;
}
else
fecha.dia++;
}
if(fecha.dia == 28)
{
fecha.dia = 1;
fecha.mes++;
}
else
fecha.dia++;
}
if(fecha.mes == 1 || fecha.mes == 3 || fecha.mes == 5 || fecha.mes == 7 || fecha.mes == 8 || fecha.mes == 10)
{
if(fecha.dia == 31)
{
fecha.dia = 1;
fecha.mes++;
}
else
fecha.dia++;
}
if(fecha.dia == 31)
{
fecha.dia = 1;
fecha.mes = 1;
fecha.año++;
}
else
fecha.dia++;
}
1 - "Calcular dias entres dos fechas" (Me devuelve un resultado cualquiera)
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int dia,
mes,
año;
} tFecha;
long calcularFecha (tFecha fecha1, tFecha fecha2);
int main()
{
system ("color 0a");
tFecha fecha1,
fecha2;
long num;
printf("Ingrese dia - Primera fecha: \n\n");
scanf("%d",&fecha1.dia);
printf("\nIngrese mes - Primera fecha: \n\n");
scanf("%d",&fecha1.mes);
printf("\nIngrese año - Primera fecha: \n\n");
scanf("%d",&fecha1.año);
printf("\nIngrese dia - Segunda fecha: \n\n");
scanf("%d",&fecha2.dia);
printf("\nIngrese mes - Segunda fecha: \n\n");
scanf("%d",&fecha2.mes);
printf("\nIngrese año - Segunda fecha: \n\n");
scanf("%d",&fecha2.año);
num = calcularFecha (fecha1, fecha2);
printf("\nDias entre las dos fechas: %d.\n",num);
return 0;
}
long calcularFecha (tFecha fecha1, tFecha fecha2)
{
long num = 0,
i;
if(fecha1.año < fecha2.año)
for(i=fecha1.año;i<fecha2.año;i++)
{
if ((i % 4 == 0) && ((i % 100 != 0) || (i % 400 == 0)))
num += i*366;
else
num += i*365;
}
else
for(i=fecha2.año;i<fecha1.año;i++)
{
if ((i % 4 == 0) && ((i % 100 != 0) || (i % 400 == 0)))
num += i*366;
else
num += i*365;
}
if(fecha1.mes < fecha2.mes)
for(i=fecha1.mes;i<fecha2.mes;i++)
{
if(i == 4 || i == 6 || i == 9 || i == 11)
num += i*30;
if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
num += i*31;
if(i == 2)
num += i*28;
}
else
for(i=fecha2.mes;i<fecha1.mes;i++)
{
if(i == 4 || i == 6 || i == 9 || i == 11)
num += i*30;
if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
num += i*31;
if(i == 2)
num += i*28;
}
if(fecha1.dia > fecha2.dia)
num += fecha1.dia - fecha2.dia;
else
num += fecha2.dia - fecha1.dia;
return num;
}
Desde ya muchas gracias.
Saludos!