Programas en C++, parámetro por valor

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
1
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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas