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 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
#include <iostream> using namespace std; int main(){ int n_dia, n_mes, n_anio; // Dia, mes y anio de nacimiento int a_dia = 4; int a_mes = 4; int a_anio = 2020; // Dia, mes y anio actuales int a = 0; int b = 0; int c = 0; int d = 0; int e = 0; // Banderas cout << "Ingrese dia nacimiento: "; cin >> n_dia; cout << "Ingrese mes nacimiento: "; cin >> n_mes; cout << "Ingrese anio nacimiento: "; cin >> n_anio; if (n_mes > a_mes) a++; if (n_mes < a_mes) b++; if (n_mes == a_mes) c++; if (n_dia > a_dia) d++; if (n_dia <= a_dia) e++; if (a == 1) cout << "Edad: " << (a_anio - n_anio) - 1 << endl; if (b == 1) cout << "Edad: " << a_anio - n_anio << endl; if (c + d == 2) cout << "Edad: "<< (a_anio - n_anio) -1 << endl; if (c + e == 2) cout << "Edad " << a_anio - n_anio << endl; return 0; }
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!