la verdad que navegando por ahi hice un salpicon de lo que encontre en la web sobre el problema d e las fechas ,este codigo lo que trata de hacer es decir la edad en base ala fecha d e nacimiento, yo utilice la fecha del sistema como referencia para sacar la edad(utilice la libreria time.h) , pero todavia tengo un inconveniente cuando la persona tiene menos de un año quiero que la edad en meses sea limpia pero todavia he tenido dificultades , la verdad es que el problema le invertido bastante tiempo, me gustaria que me echaran una manito para darle el toque final
#include <string.h>
#include <stdlib.h>
#include<time.h>
#include<stdio.h>
#include <iostream>
using namespace std;
struct Time
{
int d,m,y;
};
struct Time horalocal()
{
struct Time mt;
struct tm *local;
time_t t;
t=time(NULL);
local=localtime(&t);
mt.d=local->tm_mday;
mt.m=local->tm_mon+1;
mt.y=local->tm_year+1900;
return mt;
}
float fechanac(struct Time t)
{
struct Time h;
float year;
h=horalocal();
year=h.y-t.y;
if(h.y-t.y>1)
{
if(h.m < t.m)
year--;
else if(h.m == t.m && h.d < t.d)
year--;
}
else if((h.y-t.y>0)&&(h.y-t.y<=1))
{
if(h.m>t.m)
{year=h.m - t.m;
cout<<"ntienes "<<year<<" mesesn";}
else if(t.m>h.m)
{year=t.m-h.m;
cout<<"ntienes "<<year<<" mesesn";
}
}
return year;
}
void nombre()
{
system("color 75");
cout<<"nnn";
cout<<" ==========================="<<endl;
cout<<" = Programa Para ="<<endl;
cout<<" = Saber ="<<endl;
cout<<" = LA Edad ="<<endl;
cout<<" ==========================="<<endl;
cout<<" By Powered Luis Alfonso Jimenez"<<"nnnn"<<endl;
system("PAUSE");
system("cls");
}
int main()
{
char res;
do
{
nombre();
system("color 74");
struct Time fech;
cout<<"nnintroduce el dia en que naciste"<<endl;
cout<<"==================================="<<endl;
cin>>fech.d ;
cout<<"ahora el mes (un numero 1-12)"<<endl;
cout<<"==================================="<<endl;
cin>>fech.m ;
cout<<"ahora el anio"<<endl;
cout<<"==================================="<<endl;
cin>>fech.y;
if(fechanac(fech)<1)
{cout<<"nnTienes "<<fechanac(fech)<<" meses........nnn"<<endl;}
if((fechanac(fech)>0)&&(fechanac(fech)<30))
{cout<<"nnTienes "<<fechanac(fech)<<" años........nnn"<<endl;}
else if((fechanac(fech)>30)&&(fechanac(fech)<40))
{cout<<"nnTienes "<<fechanac(fech)<<" años..... y estas en el tercer escalon picarooooon...nnn"<<endl;}
else if((fechanac(fech)>=40)&&(fechanac(fech)<=50))
{cout<<"nnTienes "<<fechanac(fech)<<" anios..... y estas en el cuarto escalon picarooooon...n...Todo lo que sube tienen caer jajajajannn"<<endl;}
else if(fechanac(fech)>=50)
{cout<<"nnTienes "<<fechanac(fech)<<" anios..... y estas en la tercera edad picarooooon...n...Perdona que te lo diga pero hueles camajonnnn"<<endl;}
getchar();
cout<<"nnnnn Si deseas continuar into S/N"<<endl;
cin>>res;
system("pause");
system("cls");
}
while((res=='s')||(res=='S'));
return 0;
}