Autor
|
Tema: calcular funcion edad con funcion fecha de nacimiento (Leído 25,197 veces)
|
dragonlady
Desconectado
Mensajes: 37
|
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í: fecha ingresoFechanacimiento() { fecha fechanac; printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: "); scanf("%d/%d/%d",&fechanac. dia,&fechanac. mes, &fechanac. anio); return fechanac; }
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
Mensajes: 222
|
te dejo este ejemplo, no es la mejor implementacion pero creo que es lo que andas buscando. #include <stdio.h> typedef struct Fecha_Struct{ int dia; int mes; int anio; }Fecha; Fecha ingresoFechanacimiento(void){ Fecha fechanac; printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: "); scanf("%d %d %d",&fechanac. dia,&fechanac. mes, &fechanac. anio); return fechanac; } void calcularEdad(void){ Fecha f=ingresoFechanacimiento(); int edad=2015-f.anio; } int main() { calcularEdad(); printf("\npresione una tecla para cerrar"); return 0; }
|
|
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
@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: 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
Mensajes: 93
|
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 #include <stdio.h> #include <time.h> typedef struct { int dia; int mes; int anio; } fecha; int calcular_edad(fecha datos) { time_t t = time(NULL); struct tm tm = *localtime(&t); int a = ((tm.tm_year + 1900) * 100 + tm.tm_mon + 1) * 100 + tm.tm_mday; int b = (datos.anio * 100 + datos.mes) * 100 + datos.dia; return (a - b) / 10000; } int main(void) { fecha datos; printf("\nIngrese Fecha de Nacimiento dd/mm/aaaa: "); scanf("%d/%d/%d",&datos.dia,&datos.mes, &datos.anio); printf("Su edad es %d\n", calcular_edad(datos)); return(0); }
Saludos
|
|
« Última modificación: 11 Julio 2015, 06:21 am por Coper »
|
En línea
|
|
|
|
engel lex
|
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 #include <cstdio> #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
Mensajes: 37
|
Hola a todos, muchas gracias por contestar. El único que no entendí mucho fue el int calcular_edad(fecha datos) { int a = ((tm.tm_year + 1900) * 100 + tm.tm_mon + 1) * 100 + tm.tm_mday; int b = (datos.año * 100 + datos.mes) * 100 + datos.dia; return (a - b) / 10000; }
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: fecha calcularEdad() { fecha f = ingresoFechanacimiento(); int edad = 2015 - f.año; return edad; }
error: incompatible types when assigning to type 'fecha' from type 'int'
|
|
|
En línea
|
|
|
|
crack81
Desconectado
Mensajes: 222
|
pues si vas a retonar un int pues cambias el tipo de retorno int calcularEdad() { fecha f = ingresoFechanacimiento(); int edad = 2015 - f.anio; return edad; }
|
|
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
dragonlady
Desconectado
Mensajes: 37
|
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
Mensajes: 3.412
ASMático
|
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: |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
Mensajes: 37
|
Gracias a todos, ahora si lo solucioné. Sigo con problemas de distracción.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Calcular potencia con una función recursiva
Programación C/C++
|
DickGumshoe
|
4
|
20,844
|
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
|
4,023
|
18 Febrero 2013, 23:34 pm
por BatchianoISpyxolo
|
|
|
Función para calcular los números de Fibonacci
Programación C/C++
|
Caster
|
4
|
3,057
|
18 Mayo 2013, 14:00 pm
por Caster
|
|
|
FUNCION PARA VALIDAR EDAD
Programación C/C++
|
carlosabcs18
|
6
|
4,123
|
16 Julio 2014, 22:59 pm
por leosansan
|
|
|
EDAD A TRAVEZ DE FECHA DE NACIMIENTO
Programación C/C++
|
JEEM1296
|
0
|
2,180
|
1 Diciembre 2015, 07:35 am
por JEEM1296
|
|