Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: andoporto en 6 Marzo 2015, 21:45 PM

Título: problema con funcion fecha
Publicado por: andoporto en 6 Marzo 2015, 21:45 PM
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
Título: Re: problema con funcion fecha
Publicado por: engel lex en 7 Marzo 2015, 07:51 AM
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 (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!