• Martes 7 de Mayo de 2024, 22:52

Autor Tema:  fecha del dia anterior  (Leído 6941 veces)

emab84io

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
fecha del dia anterior
« en: Miércoles 1 de Diciembre de 2010, 18:19 »
0
fecha del dia anterior en DEVC++


por favor ayuda

2. Dados como entrada 3 enteros representando la fecha como día, mes, año, imprimir la fecha del día anterior. Por ejemplo para una entrada como: 1 3 1992 La salida será: Fecha anterior a 1-3-1992 es 29-02-1992.
 

que utilizo switch o condiciones if, tengo que hacer una condicion para el año bisiesto?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: fecha del dia anterior
« Respuesta #1 en: Miércoles 1 de Diciembre de 2010, 20:37 »
0
Piensa como hacerlo con un array, es mucho más rápido y sencillo. Te dejo una pista:

Código: C
  1. unsigned int dias_meses = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  2.  
Eso sí, la condición del año bisiesto nadie te la quita  :comp:

emab84io

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: fecha del dia anterior
« Respuesta #2 en: Miércoles 1 de Diciembre de 2010, 22:00 »
0
tengo esto pero no genera,   al escribir los numeros se me cierra la pantalla .que falta? revisen por favor
es para dev c++
« última modificación: Lunes 13 de Diciembre de 2010, 01:27 por emab84io »

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: fecha del dia anterior
« Respuesta #3 en: Viernes 3 de Diciembre de 2010, 20:03 »
0
Si  buscas el día anterior deberías restar en vez de sumar.
Y cambiar todas las condiciones, que están pensadas para calcular el día siguiente (¿código copiado?).

La ventana se cierra porque termina de ejecutarse el código.
Utiliza el recurrido "system("pause") de la bibliteca "stdlib.h" al final para que no se cierre la ventana.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: fecha del dia anterior
« Respuesta #4 en: Sábado 4 de Diciembre de 2010, 11:10 »
0
Cita de: "punteroNULO"
Utiliza el recurrido "system("pause") de la bibliteca "stdlib.h" al final para que no se cierre la ventana.
Estás presuponiendo que usa Windows  :P

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: fecha del dia anterior
« Respuesta #5 en: Sábado 4 de Diciembre de 2010, 18:16 »
0
Cita de: "m0skit0"
Estás presuponiendo que usa Windows
Utilizando dev-c++, es más que probable.

emab84io

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: fecha del dia anterior
« Respuesta #6 en: Domingo 5 de Diciembre de 2010, 22:09 »
0
Si, es windows

pero amigos podrian ser mas especificos en que condiciones tengo que cambiar para obtener el resultado que quiero

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: fecha del dia anterior
« Respuesta #7 en: Lunes 6 de Diciembre de 2010, 18:51 »
0
Como dije anteriormente tienes que cambiar todo el código. Pondré un trozo para empezar.
Código: C
  1. if (dia < 1) // no es el día primero
  2. {
  3.    dia--;
  4. }
  5. else // día primero
  6. {
  7.    // tenemos que calcular el último día del mes anterior y restar un mes a la fecha
  8.    // en el caso de que estemos en enero también hay que restar un año
  9. }
  10.  

emab84io

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: fecha del dia anterior
« Respuesta #8 en: Lunes 6 de Diciembre de 2010, 21:54 »
0
Seria asi. verifiquen por favor
La fecha de entrega esta proxima
« última modificación: Lunes 13 de Diciembre de 2010, 01:27 por emab84io »

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: fecha del dia anterior
« Respuesta #9 en: Jueves 9 de Diciembre de 2010, 11:34 »
0
primer error:
Código: C
  1. if (dia>d)
  2.  
por la condicion anterior a esta es evidente que nuca se cumplirá (si es monor o igual a "d" no puede se mayor).
Lo correcto sería comprobar si es mayor de 1.
Código: C
  1. if (dia>1)
  2.  

Cuando es día 1 y estamos en enero el día anterior será el 31 de diciembre del año anterior.
Código: C
  1. if (mes==1)
  2.        {
  3.           dia=31;
  4.           mes=12;
  5.           anio--;
  6.        }
  7.  

finalmente en otro caso restamos un mes y calculamos el último día de ese mes.
Código: C
  1. else
  2.        {
  3.            mes--;
  4.            switch (mes)
  5.            {
  6.                   case 4: case 6: case 9: case 11: dia=30;  break;
  7.                   case 2: if (bisiesto(anio))
  8.                              dia=29;
  9.                            else
  10.                               dia=28;
  11.                           break;
  12.                   default: dia=31;
  13.            }
  14.        }    
  15.  

todo junto:
Código: C
  1. if (dia<=d)
  2. {
  3.    if (dia>1)
  4.       dia--;
  5.    else
  6.    {
  7.        //dia=1;
  8.        if (mes==1)
  9.        {
  10.           dia=31;
  11.           mes=12;
  12.           anio--;
  13.        }
  14.        else
  15.        {
  16.            mes--;
  17.            switch (mes)
  18.            {
  19.                   case 4: case 6: case 9: case 11: dia=30;  break;
  20.                   case 2: if (bisiesto(anio))
  21.                              dia=29;
  22.                            else
  23.                               dia=28;
  24.                           break;
  25.                   default: dia=31;
  26.            }
  27.        }    
  28.    }
  29.    printf("nEl  dia anterior sera:%2d-%2d-%d.",dia,mes,anio);
  30.    return TRUE;
  31. }
  32. else
  33.     return FALSE;
  34.  

emab84io

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: fecha del dia anterior
« Respuesta #10 en: Jueves 9 de Diciembre de 2010, 13:47 »
0
Entonces con eso ya queda bien

los cases que estan arriba quedan igual?

ayuden muchachos que ya tengo la fecha cerca