tengo esta funcion pero no encuentro el error
main.cpp
#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
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
#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
tengo esta funcion pero no encuentro el error
Hola!
cual es el error?
no asumas que sabemos lo mismo que tu o que vamos a revisar el código paso a paso tratando de ver que querías hacer y porque no sale
Procura leer estos 2 temas
10 pasos para plantear una duda informática (http://foro.elhacker.net/index.php/topic,159345.msg751417.html#msg751417)
FAQ : Como hacer preguntas "inteligentes" (http://foro.elhacker.net/index.php/topic,7122.0.html)
Saludos!