El departamento escolar del jardín de niños San Vicente, desea estar actualizando la edad de sus alumnos por período escolar, par llevar un registro de sus alumnos y presentarlo a la Secretaría de Educación para fines estadísticos de la edad escolar. Desarrollar un programa en C++ que escriba una función que reciba como parámetro la fecha de nacimiento de un alumno y la fecha actual y que calcule la edad del alumno, si tiene menos de un año que dé la edad en meses, Por ejemplo:
Si la fecha de nacimiento es 12 de Oct de 2000 y la fecha actual es 1 de Oct de 2003 el programa debe decir que la persona tiene 2 años cumplidos. Si la fecha de nacimiento es 15 de Marzo de 1980 y la fecha actual es 29 de Marzo de 2003, el programa debe decir que la persona tiene 13 años. Si la fecha de nacimiento es el 12 de Noviembre de 2002 y la fecha actual es el 15 de Agosto de 2003 el programa debe decir que la persona tiene 9 meses de edad.
{"Lat":4.15741880019369,"Lng":-73.6386108398438}
1 respuesta
Respuesta de akabane89
1
1
akabane89, ATENCIÓN: Lamento decir a quienes confían en mi para conseguir...
Alguna duda pasa la voz #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; cout<<"RECUERDE LO SIGUIENTE:"<<endl; cout<<"El formato de ingreso para fechas es el siguiente:"<<endl; cout<<"13 de diciembre de 1989"<<endl; cout<<"puede ingresar el nombre del mes con la primera letra en mayuscula"<<endl; cout<<"y es estricto que ingrese lo demas tal cual como se ve"<<endl; cout<<" numero del dia , de , nombre de mes , de , numero de año"<<endl; while(respuesta == 1){ cout<<"Ingrese primera fecha: "; cin.getline(fecha1,50); cout<<"Ingrese segunda fecha: "; cin.getline(fecha2,50); tiempo=calcula(fecha1,fecha2); cout<<"El muchacho tiene :"; if(tiempo<1){ cout<<tiempo*12<<" meses."<<endl<<endl; }else{ cout<<(int)tiempo<<" anios."<<endl<<endl; } cout<<"Desea ingresar una fecha mas? si 1 /no 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 códigos verifican las cadenas de caracteres para darle un valor numérico //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 numérico entonces verificamos si existe más de un año 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 años se retornan. }else{ cout<<endl<<"2"<<endl; return (mes2-mes1)/12.0; // se devuelve una fraccion de año, que se interpretará como mes // al multiplicar por 12 al resultado. } }else{ //sino entonces tiene 1 año a mas if(a2-a1>=1){ if(mes2-mes1<0){ // si mes 2 es menor que mes 1 entonces aun no pasa un año // se calculan los meses, como? restando al reves if(dia1<=dia2){ cout<<endl<<"3"<<endl; return ((12.0 - (mes1-mes2))/12.0) + (a2-a1-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 año. 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 años entonces. } } } } } El código ta largo pero ya corre.
Estimada Experto: La agradezco de antemano su valiosa colaboración, es de vital ayuda para mi superación personal. Att. Medardo domínguez de los Ríos.