Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: davisinful en 9 Noviembre 2011, 22:53 pm



Título: Programa que calcule la diferencia de días entre dos fechas
Publicado por: davisinful en 9 Noviembre 2011, 22:53 pm

HOLA AMIGOS NECESITO REALIZAR UN PROGRAMA QUE CALCULE EL NUMERO DE DIAS UTILIZANDO FUNCIONES UNICAMENTE PARA EL AÑO 2011
SE DEBERAN VALIDAR LOS MESES Y EL AÑO OJO 2011
PERO PARA LA FECHA (DIA,MES,AÑO) Y PARA LA FECHA 2 DEBO UTILIZAR LA MISMA FUNCION ES UN TRABAJO Q MI PROFESOR ME ENVIO LO CUAL NO COMPRENDO MUCHO:
EJEM HOY ES 9 DE SEP DEL 2011 FECHA 1
        OTRA FECHA 7 DE SEP DEL 2011 LA DIFERENCIA DE DIAS ES 2 DIAS


AQUI LES DEJO UN PROGRAMA QUE ES SIMILIAR AL PEDIDO Y QUE TIENE LA METODOLOGIA QUE EL PROFESOR APLICA. PORFA VOR AYUDA. GRACIAS

#include <stdio.h>

int validadia ();
int validames ();
int validaanio ();
int dias(int d, int m);
void nombredia(int acu);
void nombremes (int mm);
void main ()
{
  int d,m,a,acudias;
  d=validadia();
  m=validames();

  while ((m==2)&&(d>28))
  {
    printf ("Febrero solo tiene 28 días... Ingrese día ==>  ");
    scanf("%d",&d);
  }



  while (((m==4)||(m==6)||(m==9)||(m==11))  &&(d>30))
  {
    printf ("Estos mese solo tienen 30 días... Ingrese día ==>  ");
    scanf("%d",&d);
  }
  a=validaanio();

  acudias=dias(d,m);

  acudias%=7;

  nombredia(acudias);

  printf ("\n Fecha ingresada dia %d mes ",d);
  nombremes(m);
  printf("año %d",a);
}

int validadia ()
{
  int dd;
  do{
  printf("Ingrese dia ==>  ");
  scanf("%i",&dd);
  }while ((dd>31)||(dd<0));
  return dd;
  }
int validames ()
{
  int mm;
  do{
  printf("Ingrese mes ==>  ");
  scanf("%i",&mm);
  }while ((mm>12)||(mm<0));
  return mm;
}
int validaanio ()
{
  int aa;
  do{
  printf("Ingrese año ==>  ");
  scanf("%i",&aa);
  }while (aa!=2011);
  return aa;
}
int dias (int dd, int mm)
{
  int acu=0;

  switch (mm)
  {
    case 1: acu=dd;
       break;
    case 2: acu=31+dd;
       break;
    case 3: acu=59+dd;
       break;
    case 4: acu=90+dd;
       break;
    case 5: acu=120+dd;
       break;
    case 6: acu=151+dd;
       break;
    case 7: acu=181+dd;
       break;
    case 8: acu=212+dd;
       break;
    case 9: acu=243+dd;
       break;
    case 10: acu=273+dd;
       break;
    case 11: acu=304+dd;
       break;
    case 12: acu=334+dd;
       break;

  }
  return acu;
}


void nombredia(int acu)
{
  switch (acu)
  {
    case 3: printf ("Lunes");
       break;
    case 4: printf ("Martes");
       break;
    case 5: printf ("Miercoles");
       break;
    case 6: printf ("Jueves");
       break;
    case 7: printf ("Viernes");
       break;
    case 1: printf ("Sabado");
       break;
    case 2: printf ("Domingo");
       break;
  }
}

void nombremes(int mm)
{
  switch (mm)
  {
    case 1: printf ("Enero");
       break;
    case 2: printf ("Febrero");
       break;
    case 3: printf ("Marzo");
       break;
    case 4: printf ("Abril");
       break;
    case 5: printf ("Mayo");
       break;
    case 6: printf ("Junio");
       break;
    case 7: printf ("Julio");
       break;
    case 8: printf ("Agosto");
       break;
    case 9: printf ("Septiembre");
       break;
    case 10: printf ("Octubre");
       break;
    case 11: printf ("Noviembre");
       break;
    case 12: printf ("Diciembre");
       break;
  }
}


Título: Re: Programa que calcule la diferencia de días entre dos fechas
Publicado por: ..:ALT3RD:.. en 9 Noviembre 2011, 22:55 pm
Creo que se podría simplicar el codigo.


Título: Re: Programa que calcule la diferencia de días entre dos fechas
Publicado por: rir3760 en 10 Noviembre 2011, 00:57 am
AQUI LES DEJO UN PROGRAMA QUE ES SIMILIAR AL PEDIDO Y QUE TIENE LA METODOLOGIA QUE EL PROFESOR APLICA. PORFA VOR AYUDA. GRACIAS
Simplifica el programa al maximo empezando por quitar la parte que imprime el mes.

Despues de eso solo debes verificar cual fecha es menor y restar esta a la otra. El proceso es similar al calculo de la diferencia entre dos fechas. De ella puedes encontrar bastantes ejemplos en la red.

Un saludo