Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dxdiag90 en 11 Octubre 2012, 00:00 am



Título: Programa en c++ que sume segundos en una hora determinada
Publicado por: dxdiag90 en 11 Octubre 2012, 00:00 am
Amigos, tengo un problema con un programilla en c++

El programa tiene que permitir sumarle a una determinada hora (h:m:s) un numero de segundos y posterior a eso mostrar la hora resultante. (el formato está en 24hrs)
Creo que se utilizan los arreglos de tipo vector pero el problema es que no me da el resultado


Título: Re: Programa en c++ que sume segundos en una hora determinada
Publicado por: avesudra en 11 Octubre 2012, 00:19 am
Hola dxdiag90 , postea lo que lleves de código con las etiquetas GeSHi , para ver donde has fallado.  :D


Título: Re: Programa en c++ que sume segundos en una hora determinada
Publicado por: dxdiag90 en 11 Octubre 2012, 01:05 am
Código:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int hin,min,seg,segsum;
    int soloSegundos,hOut,mOut,sOut;
//capturar en la pantalla los datos
cout<<"Digite la hora (24hrs): ";
cin>>hin;
cout<<"Digite los minutos: ";
cin>>min;
cout<<"DIgite segundos: "<<endl;
cin>>seg;
//Calculo todo en seg
soloSegundos = hin*3600+(min*60)+seg;

cout<<"Digite los segundos a sumar: ";
cin>>segsum;


soloSegundos += segsum;

hOut = soloSegundos / 3600;
mOut = ((soloSegundos /60)-(hOut*60));
sOut=(soloSegundos-(mOut)-(hOut));
cout<<"Horas:  "<<hOut;
cout<<"  Minutos:"  <<mOut;
cout<<"  Segundos:  "<<sOut;
    system("PAUSE");
    return EXIT_SUCCESS;
}


Título: Re: Programa en c++ que sume segundos en una hora determinada
Publicado por: avesudra en 11 Octubre 2012, 01:13 am
Había puesto algo pero nada me lo inventé todo , ya te lo dijo leosansan.


Título: Re: Programa en c++ que sume segundos en una hora determinada
Publicado por: leosansan en 12 Octubre 2012, 13:38 pm
En segundos no restastes los correspondientes a minutos y horas. El resto estaba O.K:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.    int hin,min,seg,segsum;
  9.    int soloSegundos,hOut,mOut,sOut;
  10. //capturar en la pantalla los datos
  11. cout<<"Digite la hora (24hrs): ";
  12. cin>>hin;
  13. cout<<"Digite los minutos: ";
  14. cin>>min;
  15. cout<<"DIgite segundos: "<<endl;
  16. cin>>seg;
  17. //Calculo todo en seg
  18. soloSegundos = hin*3600+(min*60)+seg;
  19.  
  20. cout<<"Digite los segundos a sumar: ";
  21. cin>>segsum;
  22.  
  23.  
  24. soloSegundos += segsum;
  25.  
  26. hOut = soloSegundos / 3600;
  27. mOut = ((soloSegundos /60)-(hOut*60));
  28. sOut=(soloSegundos-(mOut*60)-(hOut*3600));
  29. cout<<"Horas:  "<<hOut;
  30. cout<<"  Minutos:"  <<mOut;
  31. cout<<"  Segundos:  "<<sOut<<endl;
  32.    system("PAUSE");
  33.    return EXIT_SUCCESS;
  34. }
  35.  
  36.  


Título: Re: Programa en c++ que sume segundos en una hora determinada
Publicado por: rir3760 en 13 Octubre 2012, 03:04 am
Una opción similar es mediante el uso de la función "div" (prototipo en <stdlib.h> o <cstdlib>, dependiendo del caso). Ella realiza la división entera y retorna un objeto de tipo "struct div_t" con dos campos: "quot" es el cociente y "rem" el residuo.

Un ejemplo de su uso (en C) es:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main(void)
  6. {
  7.   int h;
  8.   int m;
  9.   int s;
  10.   int incr;
  11.   div_t tmp;
  12.  
  13.   srand((unsigned) time(NULL));
  14.   h = rand() % 24;
  15.   m = rand() % 60;
  16.   s = rand() % 60;
  17.   printf("%02d:%02d:%02d\n", h, m, s);
  18.  
  19.   incr = rand() % 180;
  20.   printf("+ %d segs\n", incr);
  21.  
  22.   tmp = div(h * 3600 + m * 60 + s + incr, 3600);
  23.   printf("%02d:", tmp.quot);
  24.   tmp = div(tmp.rem, 60);
  25.   printf("%02d:%02d\n", tmp.quot, tmp.rem);
  26.  
  27.   return EXIT_SUCCESS;
  28. }

Un saludo


Título: Re: Programa en c++ que sume segundos en una hora determinada
Publicado por: ankora45 en 14 Octubre 2012, 09:37 am
Hola te recomendaria que no llamaras a system para hacer una pausa porque no es multiplataforma en linux no va te recomendaria getchar, tambien no retornaste nada en el main int main(); return 0; aqui te dejo el code:
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cstdio>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.    int hin,min,seg,segsum;
  10.    int soloSegundos,hOut,mOut,sOut;
  11. cout<<"Digite la hora (24hrs): ";
  12. cin>>hin;
  13. cout<<"Digite los minutos: ";
  14. cin>>min;
  15. cout<<"DIgite segundos: "<<endl;
  16. cin>>seg;
  17. soloSegundos = hin*3600+(min*60)+seg;
  18.  
  19. cout<<"Digite los segundos a sumar: ";
  20. cin>>segsum;
  21.  
  22.  
  23. soloSegundos += segsum;
  24.  
  25. hOut = soloSegundos / 3600;
  26. mOut = ((soloSegundos /60)-(hOut*60));
  27. sOut=(soloSegundos-(mOut*60)-(hOut*3600));
  28. cout<<"Horas:  "<<hOut;
  29. cout<<"  Minutos:"  <<mOut;
  30. cout<<"  Segundos:  "<<sOut<<endl;
  31. cout<<"Pulse intro para finalizar"<<endl;
  32. getchar();
  33. getchar();
  34. return 0;
  35. }


Título: Re: Programa en c++ que sume segundos en una hora determinada
Publicado por: Puntoinfinito en 17 Octubre 2012, 00:39 am
Para no gastar RAM (?) mejor utilizar cin.get() xD