tengo esta funcion pero no encuentro el error
main.cpp
metodos.cpp
clasehora.h
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
main.cpp
Código (cpp) [Seleccionar]
#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 (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
#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