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
Hola dxdiag90 , postea lo que lleves de código con las etiquetas GeSHi , para ver donde has fallado. :D
#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;
}
Había puesto algo pero nada me lo inventé todo , ya te lo dijo leosansan.
En segundos no restastes los correspondientes a minutos y horas. El resto estaba O.K:
#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*60)-(hOut*3600));
cout<<"Horas: "<<hOut;
cout<<" Minutos:" <<mOut;
cout<<" Segundos: "<<sOut<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
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:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int h;
int m;
int s;
int incr;
div_t tmp;
srand((unsigned) time(NULL));
h = rand() % 24;
m = rand() % 60;
s = rand() % 60;
printf("%02d:%02d:%02d\n", h, m, s);
incr = rand() % 180;
printf("+ %d segs\n", incr);
tmp = div(h * 3600 + m * 60 + s + incr, 3600);
printf("%02d:", tmp.quot);
tmp = div(tmp.rem, 60);
printf("%02d:%02d\n", tmp.quot, tmp.rem);
return EXIT_SUCCESS;
}
Un saludo
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:
#include <cstdlib>
#include <iostream>
#include <cstdio>
using namespace std;
int main(int argc, char *argv[])
{
int hin,min,seg,segsum;
int soloSegundos,hOut,mOut,sOut;
cout<<"Digite la hora (24hrs): ";
cin>>hin;
cout<<"Digite los minutos: ";
cin>>min;
cout<<"DIgite segundos: "<<endl;
cin>>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*60)-(hOut*3600));
cout<<"Horas: "<<hOut;
cout<<" Minutos:" <<mOut;
cout<<" Segundos: "<<sOut<<endl;
cout<<"Pulse intro para finalizar"<<endl;
getchar();
getchar();
return 0;
}
Para no gastar RAM (?) mejor utilizar cin.get() xD