algoritmo de la edad

Iniciado por Maggie283, 27 Octubre 2005, 01:36 AM

0 Miembros y 3 Visitantes están viendo este tema.

Siuto

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

#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

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

heap

#11
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.
http://heap.zapto.org
www.badc0ded.org.ar

Siuto

Cita de: heap en 27 Octubre 2005, 05:32 AM
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...

Ragnarok

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
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

Kpax

si consideras los bisisestos es mejor calcular el numero de dias q trancurrieron !
saludos
En este mundo una de dos

Ragnarok

Cita de: Erik Dueñas en 27 Octubre 2005, 22:40 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.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

Kpax

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.
En este mundo una de dos

Siuto

Cita de: Erik Dueñas 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.
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...

heap

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
http://heap.zapto.org
www.badc0ded.org.ar

alking303

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 ;)
               
[tHE rEASON]