elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con funcion fecha
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con funcion fecha  (Leído 1,467 veces)
andoporto

Desconectado Desconectado

Mensajes: 17


Ver Perfil
problema con funcion fecha
« en: 6 Marzo 2015, 21:45 pm »

tengo esta funcion pero no encuentro el error

  main.cpp

Código
  1.      #include <iostream>
  2.        #include "clasehora.h"
  3.        using namespace std;
  4.  
  5.    int main()
  6.    {
  7.        Hora h1(),
  8.             h2(23,45,03),
  9.             h3(8, 8, 8);
  10.  
  11.        cout<< h1<<endl;
  12.        cout<<(h2+86520)<<endl;
  13.        cout<<(h2+3600)<<endl;
  14.        cout<< (--h2)<<endl;
  15.        cout<< (h2--)<<endl;
  16.        cout<< "h2-h3=" <<(h2-h3)<<endl; //
  17.        cout<< "h3-h2="<<(h3-h2)<<endl;
  18.  
  19.        cout<< h1<<endl;
  20.        cout<<(h2+86520)<<endl;
  21.        cout<<(h2+3600)<<endl;
  22.        cout<< (--h2)<<endl;
  23.        cout<< (h2--)<<endl;
  24.        cout<< "h2-h3=" <<(h2-h3)<<endl;
  25.        cout<< "h3-h2="<<(h3-h2)<<endl;
  26.        return 0;
  27.    }
  28.  
  29.        #include <iostream>
  30.        #include "clasehora.h"
  31.        using namespace std;
  32.  
  33.        Hora::Hora() //constructor por defecto
  34.        {
  35.            hora=0;
  36.            minutos=0;
  37.            segundos=0;
  38.        }
  39.        /*
  40.         Hora :: Hora(long h, long m,long s) //parametrizado
  41.         {
  42.             this->hora=h;
  43.             this->minutos=m;
  44.             this->segundo=s;
  45.         }
  46.         */
  47.  
  48.        /*
  49.         Hora :: Hora(const Hora &obj) //de copia
  50.         {
  51.             this->hora=obj.hora;
  52.             this->minutos=obj.minutos;
  53.             this->segundo=obj.segundo;
  54.         }
  55.        
  56.        
  57.         */
  58.  
  59.        /*
  60.         Hora::~Hora()
  61.         {
  62.             //dtor
  63.         }
  64.        
  65.         Hora::Hora(const unsigned hora, const unsigned minutos, const unsigned segundos)   //constructor por parametros
  66.         {
  67.             this->hora=hora;
  68.             minutos=m;
  69.             segundos=s;
  70.         }
  71.        
  72.         Hora::Hora(const Hora& obj)   //constructor de objeto
  73.         {
  74.             hora=obj.hora;
  75.             minutos=obj.minutos;
  76.             segundos=obj.segundos;
  77.        
  78.         }
  79.        
  80.        
  81.         */
  82.  
  83.  
  84.  
  85.  
  86.        Hora::Hora(int hora, int min, long seg) //pasa a segundos
  87.        {
  88.            segundos=(seg+min*60+hora*3600)%86400;
  89.            if(segundos<0)
  90.                segundos+=86400;
  91.        }
  92.  
  93.  
       
        metodos.cpp
        
        
Código
  1. Hora& Hora::operator--(void)
  2.        {
  3.            segundos--;
  4.            if(segundos<0)
  5.                segundos+=86400; //86400 son 24 horas
  6.            return *this;
  7.        }
  8.  
  9.        Hora Hora::operator--(int)
  10.        {
  11.            Hora aux(*this);
  12.            segundos--;
  13.            if(segundos<0)
  14.                segundos+=86400; //86400 son 24 horas
  15.            return aux;
  16.        }
  17.        Hora Hora::operator+(const int seg)const
  18.        {
  19.            Hora res(*this);
  20.            res.segundos+=seg;
  21.            if(res.segundos>86400) //86400 son 24 horas
  22.                res.segundos-=86400;
  23.            return res;
  24.        }
  25.  
  26.        long Hora::operator-(const Hora &obj)const
  27.        {
  28.            long res;
  29.            res=(this->segundos-obj.segundos);
  30.            if(res<0)
  31.                res+=86400;
  32.            return res;
  33.        }
  34.  
  35.        ostream& operator<<(ostream &sal, const Hora& obj) //para pasar de hh-mm-ss a am/pm
  36.        {
  37.            sal<< "HH-MM-SS"<<endl;
  38.            sal<< (obj.segundos/3600); //60*60->segundos pasados a horas
  39.            sal<<"-" <<(obj.segundos%3600)/60 << "-" <<((obj.segundos%3600)%60);
  40.            if((obj.segundos/3600)>11)
  41.                sal<<" PM"<< endl;
  42.            else
  43.                sal<<" AM" << endl;
  44.            return sal;
  45.        }
   
clasehora.h

Código
  1.  
  2.        #ifndef CLASEHORA_H_INCLUDED
  3.        #define CLASEHORA_H_INCLUDED
  4.  
  5.        #include <iostream>
  6.  
  7.        using namespace std;
  8.  
  9.        class Hora
  10.        {
  11.            long segundo;
  12.        public:
  13.            Hora();
  14.            Hora(int hora, int min, long seg);
  15.            Hora& operator--();           //pre
  16.            Hora operator--(int);         //pos
  17.            Hora operator+(const int seg)const;
  18.            long operator-(const Hora&obj)const;
  19.            friend ostream& operator<<(ostream &sal, const Hora &obj);
  20.        private:
  21.            long hora;
  22.            long minutos;
  23.            long segundos;
  24.        };
  25.  
  26.        #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


« Última modificación: 7 Marzo 2015, 07:44 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: problema con funcion fecha
« Respuesta #1 en: 7 Marzo 2015, 07:51 am »

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

Saludos!


En línea

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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines