elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [AYUDA] Calcular los dias entre dos meses C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] Calcular los dias entre dos meses C++  (Leído 4,855 veces)
Kougami

Desconectado Desconectado

Mensajes: 53


Ver Perfil
[AYUDA] Calcular los dias entre dos meses C++
« en: 14 Noviembre 2016, 15:02 pm »

Buenas,

Necesito ayuda para una funcion que permita calcular los dias que han pasado entre el 1 de enero y el 1 de un mes introducido por el usuario.

Muchas gracias de Antemano.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [AYUDA] Calcular los dias entre dos meses C++
« Respuesta #1 en: 14 Noviembre 2016, 15:45 pm »

con ctime esto es bastante facil... te explico...

time tiene un struct (tm) que está armado de la siguiente manera



lo puedes llenar de una vez en ese orden

tal que hoy sería
Código
  1. struct std::tm a = {0,0,0,14,11,116};

esto con el fin de

time_t es el tipo de variable que contiene la fecha en formato unix, haciendo uso de mktime puede convertir una variable de tipo tm a time_t...

allí tienes las 2 fechas en segundos... solo las restas y listo!

aquí la referencia!

http://www.cplusplus.com/reference/ctime/


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Kougami

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: [AYUDA] Calcular los dias entre dos meses C++
« Respuesta #2 en: 14 Noviembre 2016, 16:01 pm »

Gracias por la respuesta, pero el problema es que no puedo usar esa funcion, porque "no la se", es decir, porque el profesor no la ha enseñado aun.

El programa general pide una fecha, dia, mes y año y calcula la diferencia en dias, por separado, entre la fecha introducida y el 1/01/1900, es decir:
Primero calcula los años transcurridos contando si hay bisiestos de por medio y los expresa en dias,
Segundo calcula los dias transcurridos entre el dia introducido y el 1 del mes introducido,
Tercero calcula los meses transcurridos hasta enero y lo expresa en dias, y necesito una funcion que me haga ese calculo.

Pero de todos modos, muchas gracias por tu ayuda
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [AYUDA] Calcular los dias entre dos meses C++
« Respuesta #3 en: 14 Noviembre 2016, 16:11 pm »

entonces desde 0 el algoritmo es más o menos
(recomiendo crear un struct para ayudarte que guarde 3 int, ano, mes y dia
verificas cual fecha es mayor (primero año, luego mes y por ultimo dia)

la misma fecha inicial la usarás para ajustar a la fecha final...

si la fecha inicial año y mes y dia, son menores que la fecha final, a tu contador sumas un año, a tu fecha inicial también, repites hasta que sea falso y asegúrate de chequear años bisiestos) por cada ciclo, sumas 365 dias...

repites el procedimiento de arriba con mes.... si el mes y dia son mayores, simas un mes... (asegurate de lo mismo, si el mes es 12 y sumas 1, mes va a 1 y suma 1 al año) para esto necesitarás un array que guarde cuantos dias tiene cada mes...


ya de ahí deberías entender que hacer, espero te sirva
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
eduardo1012

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: [AYUDA] Calcular los dias entre dos meses C++
« Respuesta #4 en: 16 Noviembre 2016, 05:51 am »

con ctime esto es bastante facil... te explico...

time tiene un struct (tm) que está armado de la siguiente manera



lo puedes llenar de una vez en ese orden

tal que hoy sería
Código
  1. struct std::tm a = {0,0,0,14,11,116};

esto con el fin de

time_t es el tipo de variable que contiene la fecha en formato unix, haciendo uso de mktime puede convertir una variable de tipo tm a time_t...

allí tienes las 2 fechas en segundos... solo las restas y listo!

aquí la referencia!

http://www.cplusplus.com/reference/ctime/

En que estoy mal? Que no logro comparar utilizando ctime.
Código
  1. #include <time.h>
  2. #include<stdio.h>
  3. time_t to_seconds(const char *date)
  4. {
  5. char *strptime(const char *buf, const char *format, struct tm *tm);
  6.        struct tm storage={0,0,0,0,0,0,0,0,0};
  7.        char *p=NULL;
  8.        time_t retval=0;
  9.  
  10.        p=(char *)strptime(date,"%d-%b-%Y",&storage);
  11.        if(p==NULL)
  12.        {
  13.                retval=0;
  14.        }
  15.        else
  16.        {
  17.                retval=mktime(&storage);
  18.        }
  19.        return retval;
  20. }
  21.  
  22. int main()
  23. {
  24.  
  25.   char *date1="20-JUN-2016";
  26.   char *date2="21-JUN-2016";
  27.   scanf("%s",date1);
  28.   scanf("%s",date2);
  29.   time_t d1=to_seconds(date1);
  30.   time_t d2=to_seconds(date2);
  31.  
  32.   printf("date comparison: %s %s ",date1,date2);
  33.   if(d1==d2) printf("equal\n");
  34.   if(d2>d1)  printf("second date is later\n");
  35.   if(d2<d1)  printf("seocnd date is earlier\n");
  36.   return 0;
  37. }
En línea

Kougami

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: [AYUDA] Calcular los dias entre dos meses C++
« Respuesta #5 en: 16 Noviembre 2016, 10:37 am »

La cosa es que necesito obtener los dias que transcurren desde un mes introducido a enero, y luego con esos operare, hay algun modo de con un array donde incluya los valores de los dias de los meses y lueggo en un for los sume???
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [AYUDA] Calcular los dias entre dos meses C++
« Respuesta #6 en: 16 Noviembre 2016, 15:43 pm »

Ya dijiste como se resuelve xD crea un array de 12 elementos, con los días de cada mes, y si te dan por ejemplo 4/7 un for de 0 a < 7(-1) sumas los elementos del array y después el día... el -1 sería porque el mes 7 no se ha cumplido
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calcular días entre dos fechas...
Ejercicios
*-.Sub-Vorbio.-* 0 4,838 Último mensaje 13 Noviembre 2008, 00:51 am
por *-.Sub-Vorbio.-*
Calcular numero de días entre dos fechas!
Java
*-.Sub-Vorbio.-* 9 39,549 Último mensaje 26 Marzo 2009, 23:34 pm
por Choclito
Calcular dias entre Fecha A y Fecha B « 1 2 »
.NET (C#, VB.NET, ASP)
Braayhaan 19 13,568 Último mensaje 22 Julio 2010, 15:23 pm
por MANULOMM
Calcular días hábiles en PHP
PHP
tomasvreal28 2 7,742 Último mensaje 2 Diciembre 2015, 01:31 am
por tomasvreal28
Ayuda con código para calcular los días de un mes
Programación C/C++
D_F4UL7 1 2,043 Último mensaje 25 Octubre 2016, 15:22 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines