Sie sind auf Seite 1von 4

ACTIVIDAD AUTOAPRENDIZAJE

Programa: Programacin Orientada a Objetos con el Lenguaje C++ Curso: Lenguaje de Programacin C++ Nivel II Unidad didctica: Parmetros Nombre de la actividad: Desarrollo programas en C++, donde aplique el concepto de parmetros por valor.
Descripcin de la actividad

Parmetros por valor 1. El departamento escolar del jardn de nios San Vicente, desea estar actualizando la edad de sus alumnos por perodo escolar, para llevar un registro de sus alumnos y presentarlo a la Secretara de Educacin para fines estadsticos de la edad escolar. Desarrollar un programa en C++ que escriba una funcin que reciba como parmetro la fecha de nacimiento de un alumno y la fecha actual y que calcule la edad del alumno, si tiene menos de un ao 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 aos 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 aos. 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 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 ao"<<endl;

en

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 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) + (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 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. } } } } }

Das könnte Ihnen auch gefallen