Programa que calcule la diferencia de días entre dos fechas

Iniciado por davisinful, 9 Noviembre 2011, 22:53 PM

0 Miembros y 1 Visitante están viendo este tema.

davisinful


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

..:ALT3RD:..

"Mañana sabrás que hoy no sabes nada"

rir3760

#2
Cita de: davisinful en  9 Noviembre 2011, 22:53 PMAQUI 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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language