Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[ayuda]como saber cuantos años, meses y dias tengo

Estas en el tema de [ayuda]como saber cuantos años, meses y dias tengo en el foro de C/C++ en Foros del Web. Que tal buen dia tengan, soy estudiante de universidad y quisiera que me ayudaran con un proyecto, tengo el siguiente programa: # include <iostream> # ...
  #1 (permalink)  
Antiguo 06/11/2014, 10:17
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 9 años, 5 meses
Puntos: 0
[ayuda]como saber cuantos años, meses y dias tengo

Que tal buen dia tengan, soy estudiante de universidad y quisiera que me ayudaran con un proyecto, tengo el siguiente programa:

# include <iostream>
# include <stdio.h>
# include <conio.h>
# include <math.h>
# include <time.h>
using namespace std;
main()
{
int dia, anio, mes, a, b, c;

struct tm *tiempo;
int dia_a;
int mes_a;
int anio_a;

time_t fecha_sistema;
time(&fecha_sistema);
tiempo=localtime(&fecha_sistema);
cout<<"dame tu dia de nacimiento:"<<endl;
cin>>a;
cout<<"dame tu mes de nacimiento:"<<endl;
cin>>b;
cout<<"dame tu año de nacimiento:"<<endl;
cin>>c;

anio_a=tiempo->tm_year + 1900;
mes_a=tiempo->tm_mon + 1;
dia_a=tiempo->tm_mday;

if(a>dia_a)
{

dia=dia_a+30-a;

}
else
{
dia=dia_a-a;
}

if(b>mes_a)
{

mes=mes_a+12-b-1;
anio=anio_a-c-1;
}



else
{
mes=mes_a-b;
anio=anio_a-c;
}


cout<<"tus años son: "<<anio<<"con "<<mes<<" meses "<<" y "<<dia<<" dias "<<" tu signo es: "<<endl;

}

quisiera que el programa fuera como el de esta pagina:

http://es.easycalculation.com/date-day/age-calculator.php



omitiendo, edadad en dias y endad en minutos
soy nuevo en esto :P....agradeceria su ayuda.
  #2 (permalink)  
Antiguo 06/11/2014, 10:24
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: [ayuda]como saber cuantos años, meses y dias tengo

Cuáles son tus dudas??. Si estás aprendiendo espero que tu objetivo no sea que te demos el resultado hecho... más que nada porque así aprender, lo que se dice aprender, no vas a aprender nada.
  #3 (permalink)  
Antiguo 06/11/2014, 10:32
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: [ayuda]como saber cuantos años, meses y dias tengo

tengo ya el programa hecho....pero mis fechas no coinciden, por ejemplo si ponemos en la calculadora de la web que mañana sera su cumpleaños por ejemplo: 7/11/1995, sale que tiene aun 18 años con 11 meses y 29 diaas, y en mi programa no me sale, mas que nada quisiera que me orientaran que formula se usa o si se usa un if :/

gracias por responder =)
  #4 (permalink)  
Antiguo 06/11/2014, 11:02
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: [ayuda]como saber cuantos años, meses y dias tengo

El problema en sí es un poco más complejo de lo que lo estás planteando.

En la siguiente línea "dia=dia_a+30-a;" tienes el siguiente problema: Ese "+30" no es correcto, el valor concreto de esa suma dependerá del número de días que tenga el mes en cuestión, para eso tienes que tener en cuenta qué meses tienen 30 días, cuáles 31 y, en el caso de febrero, tendrás que calcular si el año en cuestión es bisiesto para saber si tiene 28 o 29.

Además, también has hecho:

Código C++:
Ver original
  1. if(a>dia_a)
  2. {
  3.   dia=dia_a+30-a;
  4. }
  5. else
  6. {
  7.   dia=dia_a-a;
  8. }
  9.  
  10. if(b>mes_a)
  11. {
  12.   mes=mes_a+12-b-1;
  13.   anio=anio_a-c-1;
  14. }
  15. else
  16. {
  17.   mes=mes_a-b;
  18.   anio=anio_a-c;
  19. }

Ahí tienes varios problemas:

* Si al día le sumas 30... tienes que restar un mes, en caso contrario estarás falseando la fecha.

* Cuando al mes le sumas 12... le estás restando 1... ¿por qué? ya has rectificado el valor del mes dado por el sistema unas líneas más arriba, luego ese "-1" está mal.

Puedes simplificar un poco el código si haces la propagación en cascada, como si fuese una suma de varios dígitos:

Código C++:
Ver original
  1. int dia = 0, mes = 0, anio = 0;
  2.  
  3.   dia = diaAct - diaNac;
  4.   if ( dia < 0 )
  5.   {
  6.     dia += 31; // Este valor dependerá del mes
  7.     mes--;
  8.   }
  9.  
  10.   mes += (mesAct - mesNac);
  11.   if ( mes < 0 )
  12.   {
  13.     mes += 12;
  14.     anio--;
  15.   }
  16.  
  17.   anio += (anioAct - anioNac);

Y de paso aprovecho para darte un par de consejos que te recomiendo seguir desde el principio:

* Asigna nombres que tengan sentido, "a,b,c" no son nombres válidos porque no aportan información acerca del contenido almacenado por la variable... los monosílabos resérvalos para las variables que hagan las veces de contadores en bucles.

* Tabula el código... tu código será mucho más legible y eso lo agradeceremos todos, tú el que más.

Un saludo.

Etiquetas: c++, novatos, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:31.