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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  calcular funcion edad con funcion fecha de nacimiento
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: calcular funcion edad con funcion fecha de nacimiento  (Leído 19,121 veces)
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
calcular funcion edad con funcion fecha de nacimiento
« en: 10 Julio 2015, 21:40 pm »

Hola a todos, he encontrado bastante información al respecto, así que disculpas por no ser más despierta, pero no le encuentro solución por más que intente.
Tengo que calcular la edad de un usuario en una función y lo que tengo es una función que me devuelve la fecha de nacimiento del mismo.
Así:

Código
  1. fecha ingresoFechanacimiento()
  2. {
  3.    fecha fechanac;
  4.    printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: ");
  5.    scanf("%d/%d/%d",&fechanac.dia,&fechanac.mes, &fechanac.año);
  6.    return fechanac;
  7. }
  8.  

Básicamente lo que quiero es hacer eso, otra función para mostrar la edad a partir de la función fecha de nacimiento. Pienso que quizás tendria que sacar solo el año de la función fecha de nacimiento, pero no me sale...

Desde ya, gracias!


En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #1 en: 10 Julio 2015, 23:12 pm »

te dejo este ejemplo, no es la mejor implementacion pero creo que es lo que andas buscando.


Código
  1. #include <stdio.h>
  2.  
  3. typedef struct Fecha_Struct{
  4.  int dia;
  5.  int mes;
  6.  int año;
  7. }Fecha;
  8.  
  9. Fecha ingresoFechanacimiento(void){
  10.    Fecha fechanac;
  11.    printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: ");
  12.    scanf("%d %d %d",&fechanac.dia,&fechanac.mes, &fechanac.año);
  13.    return fechanac;
  14. }
  15.  
  16. void calcularEdad(void){
  17.  
  18.    Fecha f=ingresoFechanacimiento();
  19.    int edad=2015-f.año;
  20.    printf("su edad es %d",edad);
  21. }
  22.  
  23. int main()
  24. {
  25.    calcularEdad();
  26.  
  27.    printf("\npresione una tecla para cerrar");
  28.    getchar();
  29.    getchar();
  30.    return 0;
  31. }


En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.255


Be the change you wanna see in te world


Ver Perfil
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #2 en: 11 Julio 2015, 03:07 am »

@dragonlady, tal como te puso @crack81, la vía de saber la edad de alguien a partir de la fecha de nacimiento, es simplemente restándole a la fecha actual la fecha de nacimiento. Digo fecha, pues hay que tener en cuenta también el mes y los días, pues puedes haber nacido el 3 de septiembre de 1990 y hoy es 10 de julio de 2015. Luego la resta de 2015 - 1990 daría 25, pero todavía no habría cumplido los 25 años, así que tienes que tener en cuenta esto también.

Si tienes algún problema implementando esto, puedes preguntar y estaremos más que dispuestos a ayudarte.

Salu2s

PD: En el código que puso @crack81, además de que deberías comprobar lo de los meses y días, yo, en vez de poner:

Código
  1. int edad=2015-f.año;

Tuviera una función que me sacara del sistema la fecha actual y utilizara el año de la fecha actual en la resta.
En línea

geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #3 en: 11 Julio 2015, 06:12 am »

PD: En el código que puso @crack81, además de que deberías comprobar lo de los meses y días, yo, en vez de poner:

Una solución a esto seria

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. typedef struct
  5. {
  6.    int dia;
  7.    int mes;
  8.    int año;
  9. } fecha;
  10.  
  11. int calcular_edad(fecha datos)
  12. {
  13.    time_t t = time(NULL);
  14.    struct tm tm = *localtime(&t);
  15.  
  16.    int a = ((tm.tm_year + 1900) * 100 + tm.tm_mon + 1) * 100 + tm.tm_mday;
  17.    int b = (datos.año * 100 + datos.mes) * 100 + datos.dia;
  18.  
  19.    return (a - b) / 10000;
  20. }
  21.  
  22. int main(void)
  23. {
  24.    fecha datos;
  25.  
  26.    printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: ");
  27.    scanf("%d/%d/%d",&datos.dia,&datos.mes, &datos.año);
  28.  
  29.    printf("Su edad es %d\n", calcular_edad(datos));
  30.  
  31.    return(0);
  32. }
  33.  

Saludos
« Última modificación: 11 Julio 2015, 06:21 am por Coper » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.499



Ver Perfil
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #4 en: 11 Julio 2015, 07:36 am »

una pequeña recomendación a los que publicaron codigo... si usan c++, usen las librerías del standard de c++ y no de c

Código
  1. #include <cstdio>
  2. #include <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.
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #5 en: 11 Julio 2015, 15:00 pm »

Hola a todos, muchas gracias por contestar. El único que no entendí mucho fue el

Citar
Código
  1. int calcular_edad(fecha datos)
  2. {
  3.    time_t t = time(NULL);
  4.    struct tm tm = *localtime(&t);
  5.  
  6.    int a = ((tm.tm_year + 1900) * 100 + tm.tm_mon + 1) * 100 + tm.tm_mday;
  7.    int b = (datos.año * 100 + datos.mes) * 100 + datos.dia;
  8.  
  9.    return (a - b) / 10000;
  10. }

Y si... me serviría más poder saber aparte del año si la persona ya cumplió o no, por eso estaría bueno involucrar mes y día, para saber la edad realmente.

Igual lo dejé sencillo con algo que por lo menos pudiese entender, y el problema es que no se bien como arreglar este error. Yo se que no puedo retornar un dato de tipo int si la funcion es de tipo fecha, pero no se como lo puedo arreglar:

Código
  1. fecha calcularEdad()
  2. {
  3.    fecha f = ingresoFechanacimiento();
  4.    int edad = 2015 - f.año;
  5.    return edad;
  6. }

error: incompatible types when assigning to type 'fecha' from type 'int'

En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #6 en: 11 Julio 2015, 17:29 pm »

pues si vas a retonar un int pues cambias el tipo de retorno


Código
  1.    int calcularEdad()
  2.    {
  3.        fecha f = ingresoFechanacimiento();
  4.        int edad = 2015 - f.año;
  5.        return edad;
  6.    }
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #7 en: 11 Julio 2015, 21:39 pm »

Hola! Ya intenté y no me funciona eso, me tira toda una serie de errores:


In function 'calcularEdad':|
|809|error: 'fecha' has no member named 'a'|
|809|error: stray '\361' in program|
|809|error: expected ',' or ';' before 'o'|
|808|warning: variable 'f' set but not used [-Wunused-but-set-variable]|

En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #8 en: 11 Julio 2015, 22:37 pm »

Código
  1. f.año

Es preferible que no uses eñes, ni acentos. En general, solo usa las letras del alfabeto inglés para nombrar campos, funciones y variables.

Y ahora, para que leas el error:

Citar
|809|error: 'fecha' has no member named 'a'|
|809|error: stray '\361' in program|
|809|error: expected ',' or ';' before 'o'|

El primero, está tomandose lo q escribiste como f.a. La ñ, es el segundo error, "stray \361". El tercer error, dice qe la "o" que hay después de la eñe, pues no tiene sentido ahí. Te dice que esperaba un ';', para acabar la instrucción.
En línea

dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: calcular funcion edad con funcion fecha de nacimiento
« Respuesta #9 en: 12 Julio 2015, 17:00 pm »

Gracias a todos, ahora si lo solucioné. Sigo con problemas de distracción.


En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calcular potencia con una función recursiva
Programación C/C++
DickGumshoe 4 19,149 Último mensaje 8 Abril 2012, 18:24 pm
por DickGumshoe
Help! Calcular máximo de 3 numeros usando función
Programación C/C++
sora_ori 5 2,640 Último mensaje 18 Febrero 2013, 23:34 pm
por BatchianoISpyxolo
Función para calcular los números de Fibonacci
Programación C/C++
Caster 4 1,942 Último mensaje 18 Mayo 2013, 14:00 pm
por Caster
FUNCION PARA VALIDAR EDAD
Programación C/C++
carlosabcs18 6 2,690 Último mensaje 16 Julio 2014, 22:59 pm
por leosansan
EDAD A TRAVEZ DE FECHA DE NACIMIENTO
Programación C/C++
JEEM1296 0 1,202 Último mensaje 1 Diciembre 2015, 07:35 am
por JEEM1296
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines