Calcular la edad de una persona a partir de su fecha de nacimiento y de la fecha actual en C++

Programa C++ que calcula la edad de una persona.
 
El programa pide que se introduzca por teclado la fecha de nacimiento de la persona y la fecha actual. La lectura por teclado de las dos fechas consiste en leer 6 valores enteros correspondientes al día, mes y año de nacimiento y al día, mes y año actual.
 
La primera operación que hay que realizar para calcular la edad de la persona es restar el año actual al año de nacimiento. Ese valor en principio es la edad de la persona, pero debemos comprobar si el mes de nacimiento ya ha pasado. Si el mes de nacimiento aún no ha llegado habrá que restarle uno a la edad obtenida porque aún no ha cumplido los años. Lo mismo sucede con el día de nacimiento.
 
Por ejemplo, si se introducen estas fechas:
 
Fecha nacimiento: 20/10/2000
Fecha actual: 18/2/2022
 
Para calcular la edad primero restamos los años:  2022 - 2000 = 22
La persona tendría 22 años pero según la fecha actual estamos en febrero y su mes de nacimiento es octubre por lo que aún no tiene 22. En ese caso hay que restarle uno a la edad obtenida.
 
Algo similar hay que hacer con el día de nacimiento ya que puede darse el caso de que el mes actual coincida con el de nacimiento pero el día de nacimiento aún no haya llegado. En ese caso también habría que restarle uno a la edad calculada.
/*
 * Programa C++
 * Calcular la edad de una persona a partir de su fecha de nacimiento y la fecha actual                           
 */
#include <iostream>
#include <iomanip>
using namespace std;
int main(void)
{
    //declaración de variables
    int dn, mn, an, da, ma, aa,edad;
    system("cls");
	
    //Lectura de las fechas
    //Supondremos que las fechas introducidas son correctas

    //Introducir por teclado la fecha de nacimiento
    cout << "\nFecha de nacimiento:\n";
    cout << "\nDia: ";
    cin >> dn;
    cout << "\nMes: ";
    cin >> mn;
    cout << "\nAnio: ";
    cin >> an;

    //Introducir por teclado la fecha actual
    cout << "\nFecha actual:\n";
    cout << "\nDia: ";
    cin >> da;
    cout << "\nMes: ";
    cin >> ma;
    cout << "\nAnio: ";
    cin >> aa;

    //restar años actual menos año de nacimiento para obtener la edad                                             
    edad = aa - an;

    //comparar mes y día de nacimiento con mes y día actual
    //por si la persona aún no ha cumplido los años
    if(mn > ma)
       edad--;
    else if(ma == mn)
            if(dn > da)
               edad--;
            else if(da == dn)
                    cout << "\nFelicidades!!! Hoy es tu cumpleaños" << endl;
    
    //se muestra la edad
    cout << "\nEdad: " << edad << endl;
    
    system("pause");
}

1 comentario: