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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Metodo para calcular dias transcurridos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Metodo para calcular dias transcurridos  (Leído 2,225 veces)
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Metodo para calcular dias transcurridos
« en: 25 Septiembre 2018, 18:26 pm »

Hola a tod@s, acabo de hacer un metodo para calcular los dias transcurridos desde el 1 de Enero de ese año, teniendo en cuanta que la fecha pasada por parametro esta validada, se que este metodo funciona pero me gustaria saber si hay otras formas mas simples de implementarlo? Me siento tonta :-\
Gracias!!  ;-)
Código
  1. void calcular_dias(t_fecha n)
  2. {
  3. int dias=0, m[11]={31,28,31,30,31,30,31,31,30,31,30};
  4. switch(n[1]){
  5. case 1: dias+=n[0];break;
  6. case 2: dias+=m[0]+n[0];break;
  7. case 3: dias+=m[0]+m[1]+n[0];break;
  8. case 4: dias+=m[0]+m[1]+m[2]+n[0];break;
  9. case 5: dias+=m[0]+m[1]+m[2]+m[3]+n[0];break;
  10. case 6: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+n[0];break;
  11. case 7: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+n[0];break;
  12. case 8: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+n[0];break;
  13. case 9: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+m[7]+n[0];break;
  14. case 10: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+m[7]+m[8]+n[0];break;
  15. case 11: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+m[7]+m[8]+m[9]+n[0];break;
  16. case 12: dias+=m[0]+m[1]+m[2]+m[3]+m[4]+m[5]+m[6]+m[7]+m[8]+m[9]+m[10]+n[0];break;
  17. }
  18. if(n[2]%4==0 && n[1]>2){
  19. dias++;
  20. }
  21. cout<<"Dias transcurridos desde el 1 de Enero: "<<dias<<endl;
  22. }


« Última modificación: 25 Septiembre 2018, 18:34 pm por Beginner Web » En línea

7w7
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Metodo para calcular dias transcurridos
« Respuesta #1 en: 25 Septiembre 2018, 22:11 pm »

Puedes usar la librería time.h que ya viene preparada para trabajar con fechas y horas. Algo así:

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. unsigned calcular_dias(struct tm *fecha) {
  5.    double diff;
  6.    struct tm aux = *fecha; // Copio la fecha que me han pasado
  7.  
  8.    aux.tm_mday = 1; // Cambio a dia 1 del mes
  9.    aux.tm_mon = 0; // Cambio al primer mes del año. Los meses empiezan por 0
  10.  
  11.    diff = difftime(mktime(fecha), mktime(&aux)); // Calculo los segundos de diferencia entre las dos fechas
  12.  
  13.    return diff/(60*60*24); // Devuelvo la diferencia en días
  14. }
  15.  
  16. int main() {
  17.    time_t tiempo;
  18.    struct tm *fecha;
  19.  
  20.    tiempo = time(NULL); // Consigo la marca de tiempo actual
  21.    fecha = localtime(&tiempo); // Y la paso a la estrutura que la descompone en fecha/hora
  22.  
  23.    printf("Han pasado %u dias.", calcular_dias(fecha));
  24. }
  25.  


« Última modificación: 25 Septiembre 2018, 22:53 pm por MAFUS » En línea

M4RQUS

Desconectado Desconectado

Mensajes: 12


"Paciencia Virtud de Sabios"


Ver Perfil
Re: Metodo para calcular dias transcurridos
« Respuesta #2 en: 26 Septiembre 2018, 04:15 am »

Creo que podrias calcular la cantidad de dias utilizando un for que valla desde 0 hasta n

Código
  1. int calcular_dias(int n){
  2. int dias=0;
  3. int m[11] = {31,28,31,30,31,30,31,31,30,31,30};
  4.  
  5. for(int i = 0; i < n;i++){
  6. dias += m[i];
  7. }
  8.  
  9. return dias;
  10. }
  11.  

Algo asi creo yo (Pd: yo tambien estoy comenzando a programar :B)
« Última modificación: 26 Septiembre 2018, 04:17 am por M4RQUS » En línea

"Paciencia Virtud de Sabios"
System.out.println("Iniciado pero con ganas de Aprender");
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Metodo para calcular dias transcurridos
« Respuesta #3 en: 26 Septiembre 2018, 04:23 am »

Gracias MAFUS, aunque no entiendo casi nada de ese codigo , que debiera leer para entenderlo a parte del codigo?  :laugh:
M4RQUS , bueno eso si lo sabia pero se me hace ya mucho codigo colocar un for y tampoco quiero usar una funcion aparte solo para calcular los dias, por ahi lei acerca de un for in mmmmmm  ;-)
En línea

7w7
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Metodo para calcular dias transcurridos
« Respuesta #4 en: 26 Septiembre 2018, 06:50 am »

Puedes aprender que hace cada parte que desconoces aquí: http://c.conclase.net/librerias/index.php?ansilib=time#inicio
En línea

M4RQUS

Desconectado Desconectado

Mensajes: 12


"Paciencia Virtud de Sabios"


Ver Perfil
Re: Metodo para calcular dias transcurridos
« Respuesta #5 en: 26 Septiembre 2018, 14:28 pm »

No es tan complicado usar un for ademas lo podes poner dentro del procedimiento y te acorta mucho el codigo
En línea

"Paciencia Virtud de Sabios"
System.out.println("Iniciado pero con ganas de Aprender");
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines