Título: Soluciones alternativas - Ejercicio en C++ Publicado por: csp en 5 Abril 2020, 04:00 am Buenas,
Tengo un ejercicio bastante simple en C++: calcular la edad de una persona. Pero con varias limitaciones. - De la biblioteca estandar, unicamente se puede usar cout, cin, endl (Para pedir dia, mes y año de nacimiento). - Solo variables de tipo entero. - Solo operadores aritmeticos, o de incremento/decremento. - Se permiten instrucciones if PERO, no pueden estar anidadas, no if...else y las condiciones solo se pueden formar por operadores de igualdad o relacion. - No switch, no bucles, no punteros, no funciones raras ni nada por el estilo :xD Solo lo mas basico. Despues de darle varias vueltas, la unica solucion que se me ocurrio fue la siguiente. Para simplificar, la fecha actual ya la seteo en el codigo y se asume que los valores que se ingresan para dia/mes/año son correctos. No se valida entrada. Código
A alguno se le ocurre alguna solucion mas simple/elegante que eso? Es mas, ni siquiera se si funciona correctamente con todos los valores. Los casos que use los paso, pero no se sabe. Gracias! Título: Re: Soluciones alternativas - Ejercicio en C++ Publicado por: K-YreX en 5 Abril 2020, 04:42 am Bueno, lo primero es ver las posibles ramas del problema:
Código: SI mes actual > mes nacimiento ENTONCES Sin embargo, una forma de eliminar ramas es trabajar con días directamente. La idea sería calcular los días que han pasado del inicio del año de nacimiento al día de nacimiento y del inicio del año actual al día actual y dependiendo de cual sea mayor, ya se habrán cumplido los años correspondientes del año actual o no. Como estamos trabajando con la misma referencia podemos establecer 30 días/mes para hacer los cálculos más sencillos (recuerda guardar ese 30 como una constante ya que ver números sueltos por el programa lo hace más difícil de entender). Código: edad = añoActual - añoNacimiento Título: Re: Soluciones alternativas - Ejercicio en C++ Publicado por: @XSStringManolo en 5 Abril 2020, 06:46 am Sin comprobaciones lo más básico que se me ocurre:
Código
|