problema con funcion fecha

Iniciado por andoporto, 6 Marzo 2015, 21:45 PM

0 Miembros y 1 Visitante están viendo este tema.

andoporto

tengo esta funcion pero no encuentro el error

 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

engel lex

Citartengo 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
FAQ : Como hacer preguntas "inteligentes"

Saludos!
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.