lunes, 14 de octubre de 2013

Calcula dias fecha1 entre fecha2 y fecha1 + n dias=fecha2

calll.htm
/*
  
  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();
 }



No hay comentarios:

Publicar un comentario