Programa en c++ que sume segundos en una hora determinada

Iniciado por dxdiag90, 11 Octubre 2012, 00:00 AM

0 Miembros y 1 Visitante están viendo este tema.

dxdiag90

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

avesudra

Hola dxdiag90 , postea lo que lleves de código con las etiquetas GeSHi , para ver donde has fallado.  :D
Regístrate en

dxdiag90

#2
#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;
}

avesudra

#3
Había puesto algo pero nada me lo inventé todo , ya te lo dijo leosansan.
Regístrate en

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;
}


rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

ankora45

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 (cpp) [Seleccionar]
#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;
}
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro

Puntoinfinito

AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.