/*
Author: Carlos Marin Ramirez Garcia
Date: 14/10/13 21:07
Description: Programa que recibe fecha inicial,
fecha final y calcula los dias transcurridos y tambien suma
n dias a la fecha incial para obtener la fecha final.
*/
#include<stdio.h>
#include<conio.h>
void valida_fecha(int *);
void fechaFinal(int *, int);
int validaBisiesto(int *);
void cuentaDias(int *, int *);
void validarAnio(int *);
void validarMes(int *);
main()
{
int i,f1[3],f2[3];
int n, total;
printf("\n\t\t\tingresa la primer fecha\n");
printf("ingresa el dia:");
scanf("%d",&f1[0]);
printf("ingresa el mes:");
scanf("%d",&f1[1]);
printf("ingresa el anio:");
scanf("%d",&f1[2]);
valida_fecha(f1);
printf("\n\t\t\tingre la segunda fecha\n");
printf("ingrese el dia:");
scanf("%d",&f2[0]);
printf("ingrese el mm:");
scanf("%d",&f2[1]);
printf("ingrese el nn:");
scanf("%d",&f2[2]);
valida_fecha(f2);
cuentaDias(f1,f2);
printf("\ningresa cantidad de dias:");
scanf("%d",&n);
printf("fecha inicial %d-%d-%d + %d = FECHA FINAL :",f1[0],f1[1],f1[2],n);
fechaFinal(f1,n);
getch();
}
void validarAnio(int f1[])
{
while(f1[2]<=0)
{
printf("anio invalido\n");
printf("ingrese el anio:");
scanf("%d",&f1[2]);
}
}
void validarMes(int f1[])
{
while(f1[1]<=0 || f1[1]>12)
{
printf("mes invalido\n");
printf("ingrese el mm:");
scanf("%d",&f1[1]);
}
}
void valida_fecha(int f1[])
{
validarMes(f1);
validarAnio(f1);
int mes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i, aux;
aux=validaBisiesto(f1);
if(aux!=0)
mes[1]=29;
while((f1[0]<=0 || f1[0]>mes[f1[1]-1] ))
{
printf("d invalido\n");
printf("ingrese el dia:");
}
printf("\n\t\t\tla fecha es correcta\n\n");
printf("\n\t\t%d-%d-%d\n",f1[0],f1[1],f1[2]);
}
int validaBisiesto(int f1[])
{
if(f1[2]%4==0)
return 1;
else if(f1[2]%400==0 && f1[2]%100==0)
return 1;
else
return 0;
}
void cuentaDias(int f1[], int f2[])
{
int i,sumaDf1=0,sumaDf2=0, verifica,anios,totalDias;
int mes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int aux[3];
anios=f2[2]-f1[2];
for(i=0;i<3;i++)
{
aux[i]=f1[i];
}
while(aux[2]<=f2[2])
{
if(verifica=validaBisiesto(aux)!=0 && aux[1]>3)
{
mes[1]+1;
}
aux[2]=aux[2]+1;
}
for(i=0; i<f1[1]-1; i++)
{
sumaDf1+=mes[i];
}
for(i=0; i<f2[1]-1; i++)
{
sumaDf2+=mes[i];
}
totalDias=(anios*365)-sumaDf1+sumaDf2-f1[0]+f2[0];
printf("total:%d",totalDias);
}
void fechaFinal(int f1[], int n)
{
int tDias=0, verifica;
int mes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
while(n > 0)
{
while(f1[1]<=12 && n>27)
{
if(verifica=validaBisiesto(f1)!=0)
{
mes[1]+1;
}
n=n-mes[f1[1]-1];
f1[1]=f1[1]+1;
while(f1[1]>12)
{
f1[2]=f1[2]+1;
f1[1]=1;
}
}
if(f1[0]+n==mes[f1[1]-1])
{
f1[0]=mes[f1[1]-1];
n=n-n;
}
else if(f1[0]+n>mes[f1[1]-1])
{
tDias=f1[0]+n-mes[f1[1]-1];
f1[1]=f1[1]+1;
f1[0]=tDias;
n=n-n;
}
else
{
f1[0]= f1[0]+n;
n=n-n;
}
}
printf("%d-%d-%d",f1[0], f1[1], f1[2]);
getch();
}
lunes, 14 de octubre de 2013
Calcula dias fecha1 entre fecha2 y fecha1 + n dias=fecha2
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario