• Sábado 14 de Diciembre de 2024, 20:44

Autor Tema:  estoy haciendo lo correcto,  (Leído 988 veces)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
estoy haciendo lo correcto,
« en: Domingo 5 de Octubre de 2008, 12:19 »
0
Hola,como soy novato en objetos,mirar en una clase fecha,yo tengo un metodo imprimir, en el que tengo que validar si el dia está entre 1 y 31 el mes entre 1 y 12 y que el año sea mayor que 0,tengo que hacerlo dentro del metodo?

si el codigo tengo dichos metodos:


Fecha::~Fecha(){
   dia=-1;
   mes=-1;
   anyo=-1;

}

Fecha::Fecha(){

//fecha y hora del sistema
 time_t ahora=time(0);

tm* localtm=localtime(&ahora);
dia=localtm->tm_mday;
mes=localtm->tm_mon+1;
anyo=localtm->tm_year+1900;
/*
//convertir a struct tm para fecha y hora local
tm* localtm=localtime(&ahora);
cout<<localtm->tm_mday <<"/"
    <<localtm->tm_mon+1<<"/"
    <<localtm->tm_year+1900<<endl;
*/
}
Fecha::Fecha(const Fecha &f){
   dia=f.dia;
   mes=f.mes;
   anyo=f.anyo;

}

Fecha::Fecha(int d,int m,int a){

   dia=d;
   mes=m;
   anyo=a;

}

bool Fecha::setDia(int d){
   bool correcto=false;
      if  ((d>=1)&&(d<=31)){
         correcto=true;
         dia=d;
      }
      else {
         dia=-1;
      }

return correcto;
}

bool Fecha::setMes(int m){
   bool correcto=false;
      if  ((m>=1)&&(m<=12)){
         correcto=true;
         mes=m;
      }
      else{
         mes=-1;
      }
return correcto;
}

bool Fecha::setAnyo(int a){
   bool correcto=false;
      if  (a>0){
         correcto=true;
         anyo=a;
      }
      else{
         anyo=-1;
      }

return correcto;
}

lo que quiero preguntar si para validar,,,lo tengo que hacer dentro del metodo?

un saludo,espero respuesta.

void Fecha::Imprimir(ostream &os)const{
Fecha f2;
bool diacorrecto,mescorrecto,anyocorrecto;
 os<<dia<<"/"<<mes<<"/"<<anyo;
cout<<endl;
//ahora vamos a validar
   diacorrecto=f2.setDia(dia);
   mescorrecto=f2.setMes(mes);
   anyocorrecto=f2.setAnyo(anyo);
   if((diacorrecto==false)||(mescorrecto==false)||(anyocorrecto==false)){
      cout<<"fecha no valida"<<endl;
   }

}

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: estoy haciendo lo correcto,
« Respuesta #1 en: Domingo 5 de Octubre de 2008, 19:35 »
0
Lo deberías hacer dentro del (los) constructor(es).

Y usa [code] para el código...