Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Maggie283 en 27 Octubre 2005, 01:36 am



Título: algoritmo de la edad
Publicado por: Maggie283 en 27 Octubre 2005, 01:36 am
por fis help!!!!1
necesito un algoritmo para realizar el calculo de edades, ingresando la fecha de nacimiento....
gracias


Título: Re: algoritmo de la edad
Publicado por: Crack_X en 27 Octubre 2005, 02:05 am
Vamos usa la cabeza... si yo te doy mi fecha de nacimiento como calculas mi edad? Es matematica SIMPLE , solo pensar un poco.

Vamos que tu puedes  ;)


Título: Re: algoritmo de la edad
Publicado por: TheMule en 27 Octubre 2005, 02:46 am
por fis help!!!!1
necesito un algoritmo para realizar el calculo de edades, ingresando la fecha de nacimiento....
gracias

que??????????????????? MINIMO si kisieras los nanosegundos que he vivido pero EN SERIO no puedes saber que edad tengo si te digo mi fecha de nacimiento?


Título: Re: algoritmo de la edad
Publicado por: Kpax en 27 Octubre 2005, 02:58 am
Por Dios !!!

sabes restar??? bueno en fin si le añadimos mas complejidad al asunto quiza ´puedes considerar el caso de un pata q nace el 29 de febrero y ni aun asi no es nada dificil.
suerte


Título: Re: algoritmo de la edad
Publicado por: Siuto en 27 Octubre 2005, 03:11 am
Código:
#include<stdio.h>

int main()
{
    int edad=0;
    int ano=1900; /* año en el que naciste */
   
    while(ano<2005) /* año actual */
    {
        printf("En %d mi edad era %d años.\n", ano, edad);
        edad++;
        ano++;       
    }
}


Título: Re: algoritmo de la edad
Publicado por: Unravel en 27 Octubre 2005, 03:41 am
Que simples son las cosas asi :)

No se puede restar años solo. Si yo naci en diciembre del 73 tengo 31 años pero si naci en marzo tengo 32. Y lo mismo con los dias.

No digo que el programa sea de dificultad extrema, pero no es tan facil como lo poneis aqui. Dependiendo o no de si ya hay una funcion que te lo de, que lo desconozco.

Si no la hubiera como lo haríais? Porque hay que ver el dia, el mes, el año, si es bisiesto o no, etc.

Hay por ahi un algoritmo que consiste en multiplicar el año por 10000 el mes por 100 y sumarlos la dia, y si el mes es menor le restas 1 y no se que historias


Título: Re: algoritmo de la edad
Publicado por: Siuto en 27 Octubre 2005, 04:06 am
Código:
#include<stdio.h>

int main()
{
    int edad=0;
    int dia=1; /* dia en que naciste */
    int mes=1; /* mes en que nasiste */
    int ano=1900; /* año en el que naciste */
   
    while(ano<"año actual")
    {
        printf("En %d mi edad era %d años.\n", ano, edad);
        edad++;
        ano++;       
    }
   
    if(mes<"mes actual") printf("En %d mi edad es %d años.\n", ano, edad);
    if(mes=="mes actual" && dia<="dia actual") printf("En %d mi edad es %d años.\n", ano, edad);
}

No entiendo porq decis lo de los años biciestos Unreval. Yo cuando le digo mi edad a alguien no pienso en cuantos años biciestos vivi...


Título: Re: algoritmo de la edad
Publicado por: Unravel en 27 Octubre 2005, 04:19 am
Segun tu programa, en 1901 yo tenia un año no? Soy Conan McClaud.

Hombre, piensalo, como no te van a afectar los bisiestos?


Título: Re: algoritmo de la edad
Publicado por: Siuto en 27 Octubre 2005, 04:22 am
Segun tu programa, en 1901 yo tenia un año no? Soy Conan McClaud.

Hombre, piensalo, como no te van a afectar los bisiestos?

Pero ese 1900 hay que cambiarlo por eso puse este comentario al costado: /* año en el que naciste */. Tb hay que cambiar el dia y mes.

Quien es Conan McClaud?

Ya lo pense ante del post anterior, y no me doy cuenta sino no te lo preguntaria...


Título: Re: algoritmo de la edad
Publicado por: Unravel en 27 Octubre 2005, 04:26 am
Es vedad no me fije en los comentarios.

Es el de los inmortales :)

De todas formas, si yo nazco el 1 de julio del 73 y me pliaco el progrma ahora, me dice que tengo 32 años.
Pero si nazco el 1 de Diciembre del 73, el programa tb me dice que tengo 32 años.
Por eso hay que calcular el mes, y ya dentro de los meses el dia.
Para programar eso tienes que pasarlo todo a dias, y ahi entran en cuenta los bisisestos


Título: Re: algoritmo de la edad
Publicado por: Siuto en 27 Octubre 2005, 04:39 am
Vos me estas cargando, como que no anda en esa fecha??
Ahi esta compilado como que naciste 1/12/1973 y dice q tens 31

Código:
#include<stdio.h>

int main()
{
    int edad=0;
    int dia=1; /* dia en que naciste */
    int mes=12; /* mes en que nasiste */
    int ano=1973; /* año en el que naciste */
   
    while(ano<2005) /* año actual */
    {
        printf("En %d mi edad era %d años.\n", ano, edad);
        edad++;
        ano++;       
    }
   
    if(mes<10) printf("En %d mi edad es %d años.\n", ano, edad);
    if(mes==10 && dia<=26) printf("En %d mi edad es %d años.\n", ano, edad);
}
Compilado de esta forma con Turbo C 2.01

Código:
En 1973 mi edad era 0 años.
En 1974 mi edad era 1 años.
En 1975 mi edad era 2 años.
En 1976 mi edad era 3 años.
En 1977 mi edad era 4 años.
En 1978 mi edad era 5 años.
En 1979 mi edad era 6 años.
En 1980 mi edad era 7 años.
En 1981 mi edad era 8 años.
En 1982 mi edad era 9 años.
En 1983 mi edad era 10 años.
En 1984 mi edad era 11 años.
En 1985 mi edad era 12 años.
En 1986 mi edad era 13 años.
En 1987 mi edad era 14 años.
En 1988 mi edad era 15 años.
En 1989 mi edad era 16 años.
En 1990 mi edad era 17 años.
En 1991 mi edad era 18 años.
En 1992 mi edad era 19 años.
En 1993 mi edad era 20 años.
En 1994 mi edad era 21 años.
En 1995 mi edad era 22 años.
En 1996 mi edad era 23 años.
En 1997 mi edad era 24 años.
En 1998 mi edad era 25 años.
En 1999 mi edad era 26 años.
En 2000 mi edad era 27 años.
En 2001 mi edad era 28 años.
En 2002 mi edad era 29 años.
En 2003 mi edad era 30 años.
En 2004 mi edad era 31 años.
Ejecucion del programa en MS-DOS


Título: Re: algoritmo de la edad
Publicado por: heap en 27 Octubre 2005, 05:32 am
No es mas facil hacer una resta ???????????/
haber si hoy es el octubre de 2005 y yo naci en 1986 tengo ?
2005 - 1986 = 19 //suponiendo que cumpla antes de octubre
luego un simple if statement
if (current_month > month_birtday){
edad--;
}
else if(month_birthday == current_month){
if( day_birthday > current_day){
edad--;
}
bueno eso seria para calcular la edad, pero necesitas conocer el dia en el que estas.
#include<time.h>
       fecha = time (NULL);
       tiempo_local = localtime (&fecha); //lo pasas a tiempo local
para sacar datos es por ejemplo, el mes mas grande es diciembre, eso en espa~ol, en ingles es january, define un array de 20 chars para el month y haz algo como
  strftime (month, SIZE, %A, loctime);
etx etx etx, puedes hacer calculos infinitos de if statements, dependiendo de la precision que quieras, por ejemplo si son las 7 de la noche y yo naci a las 8 tienes que hacer un if, y asi sucecivamente, hasta que tan preciso quieres ser.


Título: Re: algoritmo de la edad
Publicado por: Siuto en 27 Octubre 2005, 16:21 pm
etx etx etx, puedes hacer calculos infinitos de if statements, dependiendo de la precision que quieras, por ejemplo si son las 7 de la noche y yo naci a las 8 tienes que hacer un if, y asi sucecivamente, hasta que tan preciso quieres ser.
Fue por esto que yo en un principio lo hice solo con los años y no le agregue meses y dias.

Pero exageraste un poquito con eso de infinitos, porq dudo que en mi partida de nascimiento diga en que milesima de segundo naci...


Título: Re: algoritmo de la edad
Publicado por: Ragnarok en 27 Octubre 2005, 21:59 pm
Casi, sería así:

Citar
if (current_month < month_birtday){
edad--;
}
else if(month_birthday == current_month){
if(day_birthday > current_day){
edad--;
}

Pasar a días es muy cansino porque cada mes tiene una cantidad distinta de días y los febreros además dependen del año.

Por último hay funciones que te dan la fecha y hora actual: http://c.conclase.net/librerias/libreria.php?lib=time


Título: Re: algoritmo de la edad
Publicado por: Kpax en 27 Octubre 2005, 22:40 pm
si consideras los bisisestos es mejor calcular el numero de dias q trancurrieron !
saludos


Título: Re: algoritmo de la edad
Publicado por: Ragnarok en 27 Octubre 2005, 22:59 pm
si consideras los bisisestos es mejor calcular el numero de dias q trancurrieron !
saludos


uhm..., no. Si no calculas el numero de dias no hace falta que tengas en cuenta los bisiestos, sale igual.


Título: Re: algoritmo de la edad
Publicado por: Kpax en 28 Octubre 2005, 16:45 pm
seguro??

Creo que si hace falta al calcular el numero de dias...es decir tu edad exacta con dias y todo...pro si es solo años no recuerdo bien si falla con dias limites como 31 de dic o29 fde febrero.


Título: Re: algoritmo de la edad
Publicado por: Siuto en 28 Octubre 2005, 20:58 pm
seguro??

Creo que si hace falta al calcular el numero de dias...es decir tu edad exacta con dias y todo...pro si es solo años no recuerdo bien si falla con dias limites como 31 de dic o29 fde febrero.
Lo que decis es verdad pero si tenes en cuenta tu cumpleaños desde ese punto de vista, atravez de tu vida iria cambiando la fecha de cumpleaños.

Si yo naci el 6de Septiembre y cuento mi cumpleaños por dias y no por años, el una X cant de años empesaria a cumplir el 7 y nadie lo piensa asi...


Título: Re: algoritmo de la edad
Publicado por: heap en 29 Octubre 2005, 01:08 am
Hmm creo que me malinterpretaron: al comparar el # de dias, no importa si el mes tiene 10 o 20 o 1000, yo no calculo los a~os vividos, sino mas bien si ya cumplio otro a~o o no. Por ejemplo si nacio el 10 de febero de X y hoy es 9 de febrero y resto 2005 - X voy a tener 1 a~o de mas, por ello miro si el mes es igual y luego comparo el dia de nacido con el dia de hoy, si el dia de nacido es menor, no hago nada, si es mayor resto 1. Eso despues de asegurarme que el mes es > o = al de nacido. sino simplemente resto 1. Luego uno tambien podria mirar si el dia son iguales, y comparar las horas...........etx, etx


Título: Re: algoritmo de la edad
Publicado por: alking303 en 4 Noviembre 2005, 18:36 pm
oe hombre no sas abusivo pes como no vas a saber eso pe s
ayay que pena ah pero aca te va una ayuda pes
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{int aa,an,ed;/aa=año actual an=año de nacimiento ed=edad
  cout<<"Año de nacimiento: ";
  cin>>an;     
  cout<<"Año de actual: ";
  cin>>an; 
ed=aa-an;
cout<<"Edad de nacimiento: "<<ed;
getch();
}
ya lo tienes ok bey saludos ;)
               


Título: Re: algoritmo de la edad
Publicado por: JEEM1296 en 1 Diciembre 2015, 07:04 am
se que es un tema viejo, pero busco lo mismo, y la verdad no es tan simple como  lo cuentan, no se olviden del analisis de los años bisiestos ademas de los dias por mes, serian varias validaciones


Título: Re: algoritmo de la edad
Publicado por: daryo en 1 Diciembre 2015, 14:43 pm
sacado de la wikipedia:
Citar
Un año es bisiesto si es divisible entre 4, a menos que sea divisible entre 100. Sin embargo, si un año es divisible entre 100 y además es divisible entre 400, también resulta bisiesto. Obviamente, esto elimina los años finiseculares (últimos de cada siglo, que ha de terminar en 00) cuyo siglo no es múltiplo de 4

Citar
Este día se añade para corregir el desfase que existe entre la duración del año trópico: 365 días 5 h 48 min 45,25 s (365,242190402 días) y el año calendario de 365 días. Esto requiere que cada cuatro años se corrija el año calendario

en todo caso prueba despreciarlo que no vivimos lo suficiente para que añada otro año a nuestra vida

cada 1460 años se le agrega uno adicional 365x4

http://foro.elhacker.net/programacion_cc/edad_a_travez_de_fecha_de_nacimiento-t445033.0.html