Puedes usar el tda fecha y algun calculo para realizar el calculo exacto de la edad de una persona
TDA FECHA
#include <iostream>
#include <math.h>
using namespace std;
const int MAX=3;
typedef int t_fecha[MAX];
void crear_fecha(t_fecha &n);
bool VALIDAR(t_fecha n);
void mostrar_fecha(t_fecha n);
void comparar_fechas(t_fecha n, t_fecha m);
void mayor_fechas(t_fecha n, t_fecha m);
int main()
{
t_fecha a, b;
crear_fecha(a);
crear_fecha(b);
comparar_fechas(a, b);
mayor_fechas(a, b);
system("pause");
return 0;
}
void crear_fecha(t_fecha &n)
{
do{
cout << "Ingrese dia: "; cin >> n[0];
cout << "Ingrese mes: "; cin >> n[1];
cout << "Inrese año : "; cin >> n[2];
}while(VALIDAR(n)==false);
mostrar_fecha(n);
}
bool VALIDAR(t_fecha n)
{
if(n[1]>=1 && n[1]<=12){
switch(n[1]){
case 1: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 2: if(n[2]%4==0){
if(n[0]>0 && n[0]<30){return true;}else{return false;}
}
else{
if(n[0]>0 && n[0]<29){return true;}else{return false;}
}; break;
case 3: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 4: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
case 5: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 6: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
case 7: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 8: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 9: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
case 10: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
case 11: if(n[0]>0 && n[0]<31){return true;}else{return false;}; break;
case 12: if(n[0]>0 && n[0]<32){return true;}else{return false;}; break;
default: return false;
}
}
else{
return false;
}
}
void mostrar_fecha(t_fecha n)
{
cout << n[0] << "/" << n[1] << "/" << n[2] << endl;
}
void comparar_fechas(t_fecha n, t_fecha m)
{
if(n[0]==m[0] && n[1]==m[1] && n[2]==m[2]){
cout << "Las fechas son iguales" << endl;
}
else{
cout << "Las fechas son diferentes" << endl;
}
}
void mayor_fechas(t_fecha n, t_fecha m)
{
if(n[2]>m[2]){
cout << "Es mayor "; mostrar_fecha(n);
}
else{
if(n[2]<m[2]){
cout << "Es mayor "; mostrar_fecha(m);
}
else{
if(n[1]>m[1]){
cout << "Es mayor "; mostrar_fecha(n);
}
else{
if(n[1]<m[1]){
cout << "Es mayor "; mostrar_fecha(m);
}
else{
if(n[0]>m[0]){
cout << "Es mayor "; mostrar_fecha(n);
}
else{
if(n[0]<m[0]){
cout << "Es mayor "; mostrar_fecha(m);
}
else{
cout << "Son iguales" << endl;
}
}
}
}
}
}
}
CALCULO EDAD
[int d, m ,a, edad;
cout << "8/8/2014 << endl;
cout << "COLOQUE FECHA DE NACIMIENTO EN FORMATO DD/MM/AAAA:" << endl;
cin >> d >> m >> a;
edad=2014-a;
if(m==8){
if(d<8){
edad++;
}
else{
if(d>8){
edad--;
}
}
}
else{
if(m<8){
edad++;
}
else{
edad--;
}
}