Actividad 2 Semana 2

5
ACTIVIDAD AUTOAPRENDIZAJE Programa: Programación Orientada a Objetos con el Lenguaje C++ Curso: Lenguaje de Programación C++ Nivel II Unidad didáctica: Parámetros Nombre de la actividad: Desarrollo programas en C++, donde aplique el concepto de parámetros por valor. Descripción de la actividad Parámetros por valor 1. El departamento escolar del jardín de niños San Vicente, desea estar actualizando la edad de sus alumnos por período escolar, para 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. R/ #include <iostream.h> #include <stdlib.h> #include <string.h> #include <stdio.h> float calcula(char[], char[]); int main() { int respuesta=1; char fecha1[50];

Transcript of Actividad 2 Semana 2

Page 1: Actividad 2 Semana 2

ACTIVIDAD AUTOAPRENDIZAJE 

Programa: Programación Orientada a Objetos con el Lenguaje C++Curso: Lenguaje de Programación C++ Nivel IIUnidad didáctica: Parámetros 

Nombre de la actividad: Desarrollo programas en C++, donde aplique el concepto de parámetros por valor. 

Descripción de la actividad

Parámetros por valor

1.      El departamento escolar del jardín de niños San Vicente, desea estar actualizando la edad de sus alumnos por período escolar, para 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.

R/

#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){

Page 2: Actividad 2 Semana 2

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; }

Page 3: Actividad 2 Semana 2

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

Page 4: Actividad 2 Semana 2

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