main.cpp
Código
#include <iostream> #include "clasehora.h" using namespace std; int main() { Hora h1(), h2(23,45,03), h3(8, 8, 8); cout<< h1<<endl; cout<<(h2+86520)<<endl; cout<<(h2+3600)<<endl; cout<< (--h2)<<endl; cout<< (h2--)<<endl; cout<< "h2-h3=" <<(h2-h3)<<endl; // cout<< "h3-h2="<<(h3-h2)<<endl; cout<< h1<<endl; cout<<(h2+86520)<<endl; cout<<(h2+3600)<<endl; cout<< (--h2)<<endl; cout<< (h2--)<<endl; cout<< "h2-h3=" <<(h2-h3)<<endl; cout<< "h3-h2="<<(h3-h2)<<endl; return 0; } #include <iostream> #include "clasehora.h" using namespace std; Hora::Hora() //constructor por defecto { hora=0; minutos=0; segundos=0; } /* Hora :: Hora(long h, long m,long s) //parametrizado { this->hora=h; this->minutos=m; this->segundo=s; } */ /* Hora :: Hora(const Hora &obj) //de copia { this->hora=obj.hora; this->minutos=obj.minutos; this->segundo=obj.segundo; } */ /* Hora::~Hora() { //dtor } Hora::Hora(const unsigned hora, const unsigned minutos, const unsigned segundos) //constructor por parametros { this->hora=hora; minutos=m; segundos=s; } Hora::Hora(const Hora& obj) //constructor de objeto { hora=obj.hora; minutos=obj.minutos; segundos=obj.segundos; } */ Hora::Hora(int hora, int min, long seg) //pasa a segundos { segundos=(seg+min*60+hora*3600)%86400; if(segundos<0) segundos+=86400; }
metodos.cpp
Código
Hora& Hora::operator--(void) { segundos--; if(segundos<0) segundos+=86400; //86400 son 24 horas return *this; } Hora Hora::operator--(int) { Hora aux(*this); segundos--; if(segundos<0) segundos+=86400; //86400 son 24 horas return aux; } Hora Hora::operator+(const int seg)const { Hora res(*this); res.segundos+=seg; if(res.segundos>86400) //86400 son 24 horas res.segundos-=86400; return res; } long Hora::operator-(const Hora &obj)const { long res; res=(this->segundos-obj.segundos); if(res<0) res+=86400; return res; } ostream& operator<<(ostream &sal, const Hora& obj) //para pasar de hh-mm-ss a am/pm { sal<< "HH-MM-SS"<<endl; sal<< (obj.segundos/3600); //60*60->segundos pasados a horas sal<<"-" <<(obj.segundos%3600)/60 << "-" <<((obj.segundos%3600)%60); if((obj.segundos/3600)>11) sal<<" PM"<< endl; else sal<<" AM" << endl; return sal; }
clasehora.h
Código
#ifndef CLASEHORA_H_INCLUDED #define CLASEHORA_H_INCLUDED #include <iostream> using namespace std; class Hora { long segundo; public: Hora(); Hora(int hora, int min, long seg); Hora& operator--(); //pre Hora operator--(int); //pos Hora operator+(const int seg)const; long operator-(const Hora&obj)const; friend ostream& operator<<(ostream &sal, const Hora &obj); private: long hora; long minutos; long segundos; }; #endif // CLASEHORA_H_INCLUDED
output correct
h2 son: 85503 segundos
h3 son: 29288 segundos
h2-h3 es: 56215
h2-h3 es: -56215
h2+86520 es: 172023
h2+3600 es: 89103
--h2: 85502
h2--: 85502
Mod: tema modificado, para hacer más legible tu código usa las etiquetas GeSHi