Autor
|
Tema: [AYUDA] Calcular los dias entre dos meses C++ (Leído 5,331 veces)
|
Kougami
Desconectado
Mensajes: 53
|
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
|
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 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
Mensajes: 53
|
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
|
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
Mensajes: 32
|
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 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. #include <time.h> #include<stdio.h> time_t to_seconds(const char *date) { char *strptime(const char *buf, const char *format, struct tm *tm); struct tm storage={0,0,0,0,0,0,0,0,0}; char *p=NULL; time_t retval=0; p=(char *)strptime(date,"%d-%b-%Y",&storage); if(p==NULL) { retval=0; } else { } return retval; } int main() { char *date1="20-JUN-2016"; char *date2="21-JUN-2016"; time_t d1=to_seconds(date1); time_t d2=to_seconds(date2); printf("date comparison: %s %s ",date1 ,date2 ); if(d2 >d1 ) printf("second date is later\n"); if(d2 <d1 ) printf("seocnd date is earlier\n"); return 0; }
|
|
|
En línea
|
|
|
|
Kougami
Desconectado
Mensajes: 53
|
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
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Calcular días entre dos fechas...
Ejercicios
|
*-.Sub-Vorbio.-*
|
0
|
5,010
|
13 Noviembre 2008, 00:51 am
por *-.Sub-Vorbio.-*
|
|
|
Calcular numero de días entre dos fechas!
Java
|
*-.Sub-Vorbio.-*
|
9
|
40,083
|
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
|
14,404
|
22 Julio 2010, 15:23 pm
por MANULOMM
|
|
|
Calcular días hábiles en PHP
PHP
|
tomasvreal28
|
2
|
8,112
|
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,308
|
25 Octubre 2016, 15:22 pm
por MAFUS
|
|