Você está na página 1de 5

#include <iostream.

h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
float calcula(char[], char[]);
int main()
{
int respuesta=1;
char fecha1[50];
char fecha2[50];
float tiempo;
system ("cls");
while(respuesta == 1)
{
cout<<"Ingrese la fecha de nacimiento del alumno ejm
03 de enero de 1982 :"<<endl;
cin.getline(fecha1,50);
cout<<"Ingrese la fecha actual ejm 11 de mayo de 2012:
"<<endl;
cin.getline(fecha2,50);
tiempo=calcula(fecha1,fecha2);
cout<<"El alumno tiene :";
if(tiempo<1){
cout<<tiempo*12<<" meses."<<endl<<endl;
}else{
cout<<(int)tiempo<<" anios."<<endl<<endl;
}
cout<<"Desea ingresar una fecha mas? si su rta es SI
digite 1,NO digite 0 :"<<endl;
cin>>respuesta;
cin.ignore();
}
system("PAUSE");
return 0;
}
float calcula(char fecha1[], char fecha2[])
{
float a1,a2;
char m1[20],m2[20];
float mes1,mes2;
int dia1,dia2;
sscanf(fecha1,"%d de %s de %f", &dia1,&m1,&a1);
sscanf(fecha2,"%d de %s de %f", &dia2,&m2,&a2);
// Los siguientes cdigos verifican las cadenas

de caracteres para darle un valor numrico


//a las variables mes1 y mes2
if(strcmp(m1,"enero")==0 ||
strcmp(m1,"Enero")==0)
{
mes1=1;
}
if(strcmp(m2,"enero")==0 ||
strcmp(m2,"Enero")==0)
{
mes2=1;
}
if(strcmp(m1,"febrero")==0 ||
strcmp(m1,"Febrero")==0)
{
mes1=2;
}
if(strcmp(m2,"febrero")==0 ||
strcmp(m2,"Febrero")==0)
{
mes2=2;
}
if(strcmp(m1,"marzo")==0 ||
strcmp(m1,"Marzo")==0)
{
mes1=3;
}
if(strcmp(m2,"marzo")==0 ||
strcmp(m2,"Marzo")==0)
{
mes2=3;
}
if(strcmp(m1,"abril")==0 ||
strcmp(m1,"Abril")==0)
{
mes1=4;
}
if(strcmp(m2,"abril")==0 ||
strcmp(m2,"Abril")==0)
{
mes2=4;
}
if(strcmp(m1,"mayo")==0 ||
strcmp(m1,"Mayo")==0)
{
mes1=5;
}

if(strcmp(m2,"mayo")==0 ||
strcmp(m2,"Mayo")==0)
{
mes2=5;
}
if(strcmp(m1,"junio")==0 ||
strcmp(m1,"Junio")==0)
{
mes1=6;
}
if(strcmp(m2,"junio")==0 ||
strcmp(m2,"Junio")==0)
{
mes2=6;
}
if(strcmp(m1,"julio")==0 ||
strcmp(m1,"Julio")==0){
mes1=7;
}
if(strcmp(m2,"julio")==0 ||
strcmp(m2,"Julio")==0){
mes2=7;
}
if(strcmp(m1,"agosto")==0 ||
strcmp(m1,"Agosto")==0){
mes1=8;
}
if(strcmp(m2,"agosto")==0 ||
strcmp(m2,"Agosto")==0){
mes2=8;
}
if(strcmp(m1,"setiembre")==0 ||
strcmp(m1,"Setiembre")==0){
mes1=9;
}
if(strcmp(m2,"setiembre")==0 ||
strcmp(m2,"Setiembre")==0){
mes2=9;
}
if(strcmp(m1,"octubre")==0 ||
strcmp(m1,"Octubre")==0){
mes1=10;
}
if(strcmp(m2,"octubre")==0 ||
strcmp(m2,"Octubre")==0){
mes2=10;
}

if(strcmp(m1,"noviembre")==0 ||
strcmp(m1,"Noviembre")==0){
mes1=11;
}
if(strcmp(m2,"noviembre")==0 ||
strcmp(m2,"Noviembre")==0){
mes2=11;
}
if(strcmp(m1,"diciembre")==0 ||
strcmp(m1,"Diciembre")==0){
mes1=12;
}
if(strcmp(m2,"diciembre")==0 ||
strcmp(m2,"Diciembre")==0){
mes2=12;
}
// Ahora ya que tenemos algo numrico entonces
verificamos si existe ms de un ao de vida
if(a2-a1==0){
//calculamos los meses
if(mes2-mes1==0){ cout<<endl<<"1"<<endl;
return 0.0; // si estamos en el mismo mes
entonces solo han pasado dias, entonces 0 meses y aos
se retornan.
}else{ cout<<endl<<"2"<<endl;
return (mes2-mes1)/12.0;
// se devuelve
una fraccion de ao, que se interpretar como mes
// al multiplicar por 12 al resultado.
}
}else{ //sino entonces tiene 1 ao a mas
if(a2-a1>=1){
if(mes2-mes1<0){ // si mes 2 es menor que
mes 1 entonces aun no pasa un ao
// se calculan los meses, como? restando
al reves
if(dia1<=dia2){ cout<<endl<<"3"<<endl;
return ((12.0 - (mes1-mes2))/12.0) + (a2a1-1);
}else{
if(dia1>dia2){
cout<<endl<<"4"<<endl;
return (11.0 - (mes1-mes2))/12.0 +
(a2-a1-1); // si aun dia 1 es mayor que dia 2 entonces
no se ha cumplido el ultimo mes.
}
}
}else

{
if(mes2==mes1){ // si el mes 1 y mes 2 son
iguales entonces verificamos si ya pas un ao.
if(dia1<=dia2){
cout<<endl<<"5"<<endl;
return a2-a1;
}
else
{
if(dia1>dia2)
{
cout<<endl<<"6"<<endl;
return 11.0/12.0 + (a2-a1-1); // si aun
dia 1 es mayor que dia 2 entonces no se ha cumplido el
ultimo mes.
}
}
}
else
{
cout<<endl<<"7"<<endl;
//
este else indica mes2>mes1
return a2-a1; //se retorna el
numero de aos entonces.
}
}
}
}
}

Você também pode gostar