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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Reloj c++
« en: 31 Marzo 2016, 20:32 pm »

Hola gente, de nuevo vengo a molestar, estoy haciendo un codigo de un reloj, tengo el codigo completo del reloj, lo que quiero ahora, es que el usuario digite cuantas horas, minutos y segundos quiere adelantar el reloj, y cuantas quiere atrasar, lo que pasa es que al adelantar muchos minutos y segundos cambia las horas o los minutos.
Si me pudieran ayudar, como puedo hacer para que no sume mas de la cuenta (que las horas no pasen de 24, que los minutos de 60 y segundos de 60)
Estoy empezando y no se como hacer :-(
Aca el codigo:
Código:
class Reloj{
private:
int horas, minutos, segundos, horasxa, minutosxa, segundosxa, horasxat, minutosxat, segundosxat;

};
int main(){
Reloj reloj1;
reloj1.setHoras(8);
reloj1.setMinutos(30);
reloj1.setSegundos(15);
}


En línea

Aquellos que estan locos como para pensar que pueden cambiar el mundo , son los que lo hacen.
kr.chacacreker

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Reloj c++
« Respuesta #1 en: 31 Marzo 2016, 21:15 pm »

Podrías poner solo el resto de la división y listo... hace algo como:

Código:
...
reloj1.setHoras(ingreso%60);
...


En línea

LaiaxanIV

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Reloj c++
« Respuesta #2 en: 31 Marzo 2016, 21:20 pm »

Mira esto, esta claro que es mejorable pero creo que te puede funcionar para lo que buscas. Si necesitas ayuda o no entiendes alguna cosa, solo lo tienes que decir!

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Reloj{
  5. private:
  6. int time;
  7. bool correctSum(int t);
  8. bool correctSub(int t);
  9.    public:
  10.            Reloj();
  11.            void subHoras(int h);
  12.            void subMin(int m);
  13.            void subSeg(int s);
  14.            void addHoras(int h);
  15.            void addMin(int m);
  16.            void addSeg(int s);
  17.            void printReloj();
  18. };
  19.  
  20.  
  21. Reloj::Reloj(){
  22.    time = 0;
  23.    }
  24.  
  25.    void Reloj::addHoras(int h){
  26.     if(!correctSum(h*3600)) cout << "No se ha podido realizar esta operacion con las horas" << endl;
  27.     else time += h*3600;
  28. }
  29.  
  30.    void Reloj::addMin(int m){
  31.     if(!correctSum(m*60)) cout << "No se ha podido realizar esta operacion con los minutos" << endl;
  32.     time += m*60;
  33. }
  34.  
  35.    void Reloj::addSeg(int s){
  36.     if(!correctSum(s)) cout << "No se ha podido realizar esta operacion con los segundos" << endl;
  37.     time += s;
  38. }
  39.  
  40.    void Reloj::subHoras(int h){
  41.     if(!correctSub(h*3600)) cout << "No se ha podido realizar esta operacion con las horas" << endl;
  42.     else time -= h*3600;
  43. }
  44.  
  45.    void Reloj::subMin(int m){
  46.     if(!correctSub(m*60)) cout << "No se ha podido realizar esta operacion con los minutos" << endl;
  47.     time -= m*60;
  48. }
  49.  
  50.    void Reloj::subSeg(int s){
  51.     if(!correctSub(s)) cout << "No se ha podido realizar esta operacion con los segundos" << endl;
  52.     time -= s;
  53. }
  54.  
  55.    void Reloj::printReloj(){
  56. int h = time/3600;
  57. int min = (time%3600)/60;
  58. int seg = (time%3600)%60;
  59. cout << h << ":" << min << ":" << seg << endl;
  60. }
  61.  
  62.    bool Reloj::correctSum(int t){
  63. if((time + t) >= 3600*24) return false;
  64. return true;
  65. }
  66.  
  67.    bool Reloj::correctSub(int t){
  68. if(time - t < 0) return false;
  69. return true;
  70. }
  71.  
  72. int main(){
  73. Reloj reloj;
  74. cout << "Introduce la hora inicial del reloj en formato HH:MM:SS" << endl;
  75. int h,m,s;
  76. char c;
  77. cin >> h >> c >> m >> c >> s;
  78. reloj.addHoras(h);
  79. reloj.addMin(m);
  80. reloj.addSeg(s);
  81. int op;
  82. cout << "1->Adelantar reloj 2->Retrasar reloj 3->Ver hora -1-> Salir" << endl;
  83. cin >> op;
  84. while(op != -1){
  85. switch(op){
  86. case 1:
  87. cout << "Introduce el tiempo que quieres adelantar en el siguiente formato HH:MM:SS" << endl;
  88. cin >> h >> c >> m >> c >> s;
  89. reloj.addHoras(h);
  90. reloj.addMin(m);
  91. reloj.addSeg(s);
  92. cout << "Hora:" << endl;
  93. reloj.printReloj();
  94. break;
  95. case 2:
  96. cout << "Introduce el tiempo que quieres retrasar en el siguiente formato HH:MM:SS" << endl;
  97. cin >> h >> c >> m >> c >> s;
  98. reloj.subHoras(h);
  99. reloj.subMin(m);
  100. reloj.subSeg(s);
  101. cout << "Hora:" << endl;
  102. reloj.printReloj();
  103. break;
  104. case 3:
  105. cout << "Hora:" << endl;
  106. reloj.printReloj();
  107. break;
  108. default:
  109. cout << "Opcion no valida" << endl;
  110. }
  111. cin >> op;
  112. }
  113. }
En línea

ianmorar03

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Re: Reloj c++
« Respuesta #3 en: 1 Abril 2016, 04:47 am »

Podrías poner solo el resto de la división y listo... hace algo como:

Código:
...
reloj1.setHoras(ingreso%60);
...

Pura vida! y si quisiera atrasar las horas como hago?
En línea

Aquellos que estan locos como para pensar que pueden cambiar el mundo , son los que lo hacen.
HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Reloj c++
« Respuesta #4 en: 17 Abril 2016, 03:50 am »

Siiempre tuve curiosidad..... por qué se suelen implementar los metodos por fuera de la clase donde se definen en C++ ?

En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Reloj c++
« Respuesta #5 en: 17 Abril 2016, 09:45 am »

Los que se implementan dentro de la clase se convierten en métodos inline. Cada vez que el compilador encuentra uno no hace una llamada a ese método, sino que copia todo el código en ese lugar.
Por tanto los métodos inline se usan para hacer pequeños trabajos muy repetidos ya que no hay que perder tiempo llamándolos. Nótese que si el método inline es grande el código final va a crecer mucho, además por lo que es coste de tiempo en llamarlo al del tamaño del código objeto, a lo mejor, no compensa.

El implementarlo fuera sigue la filosofía de separar la declaración de la definición. Así la declaración va en un archivo de cabecera que puede pasarse al archivo de código que sea necesario. Mjentras tanto tienes por otra parte las definiciones en un código objeto que el enlazador te va a unir en último momento.
Esto te da la ventaja de reducir el tiempo de compilación porque sólo debes compilar el archivo que se ha cambiado y no todo el código.

Por cierto, no resucites hilos antiguos. Estaría mejot si iniciaras uno nuevo para la cuestión.
« Última modificación: 17 Abril 2016, 09:48 am por MAFUS » En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Reloj c++
« Respuesta #6 en: 17 Abril 2016, 15:05 pm »

Amigo @MAFUS: he leido sobre funciones inline...... entiendo que copian el codigo in situ en vez de hacer una llamada a la funcion ahorrando tiempo en la llamada y espacio en la pila....... pero... es el caso del "Reloj c++" ? no veo la keyword inline

O cuando estan dentro de una clase no requieren esa keyword y el concepto es el mismo ?

En caso de no ser el mismo concepto........ cual es?


En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Reloj c++
« Respuesta #7 en: 17 Abril 2016, 16:03 pm »

La palabra clave inline hace lo mismo, lo que en ese caso la definición de la función puede hacerse en el archivo .cpp
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
al reloj
Programación Visual Basic
bautistasbr 1 1,774 Último mensaje 23 Octubre 2005, 09:06 am
por NYlOn
Reloj en C « 1 2 »
Programación C/C++
sinsombra_666 14 26,739 Último mensaje 26 Septiembre 2010, 19:25 pm
por ace332
Duda reloj windows « 1 2 »
Programación General
gonzalitosk8 11 6,529 Último mensaje 9 Junio 2016, 04:41 am
por engel lex
Pagar con el reloj, una realidad
Noticias
wolfbcn 0 740 Último mensaje 25 Enero 2019, 01:57 am
por wolfbcn
Reloj cámara
Hardware
seniorgare 4 1,939 Último mensaje 7 Febrero 2019, 21:46 pm
por seniorgare
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines