Saludos,
- Depende de la temática de tu ejercicio, si estás en Algoritmos lo correcto sería utilizar conversiones; si estás en Programación utilizando librerías, entonces lo correcto sería utilizar librerías de tratamiento de fechas/horas.
- Supongo que estás tratando con ejercicios de Algoritmos, entonces has conversiones:
-- Aunque también depende algo del formato de las fechas/horas que vas a utilizar, por ejemplo si la hora dada es:
13:20:23 tomas las horas (13) las pasas a una unidad base por ejemplo segundos: 13 * 3600 = 46800, lo sumas con los minutos convertidos: 20 * 60 = 1200, y a la vez lo sumas con los segundos, quedando: 46800 + 1200 + 23 = 48023 segundos.
-- Para finalizar sumas tus segundos obtenidos con los segundos dados, suponiendo que los segundos dados son
500, entonces: 48023 + 500 = 48523.
-- Listo ahora haces el inverso:
--- Horas = 48523 / 3600 = 13; residuo = 1723
--- Minutos = 1723 / 60 = 28; residuo = 43
--- Segundos = 43
-- Quedando: 13:28:43
- Hay varias maneras, otra podría ser el convertir los segundos dados a horas, minutos y segundos, para luego sumarlos a las horas, minutos y segundos dados al inicio.
- No le veo mucho parecido a un temporizador, a no ser que no lo haya entendido bien...
Muchas gracias, ya lo tengo. Al final lo he hecho así:
#include <windows.h>
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
unsigned short hora0;
unsigned short minutos0;
unsigned short segundos0;
unsigned int segundos_add;
unsigned short horas1;
unsigned short minutos1;
unsigned short segundos1;
cout << "Este programa implementa un temporizador que determina la hora que sera dentro de x segundos " << endl;
cout << "a partir de la hora introducida por el usuario." << endl << endl;
cout << "Dame la hora actual:" << endl;
cout << "Hora: ";
cin >> hora0;
cout << "Minuto: ";
cin >> minutos0;
cout << "Segundo: ";
cin >> segundos0;
cout << endl;
cout << "Dame los segundos a anadir: ";
cin >> segundos_add;
segundos1 = segundos0 + segundos_add;
minutos1 = minutos0 + segundos1 / 60;
segundos1 = segundos1 % 60;
horas1 = hora0 + minutos1 / 60;
minutos1 = minutos1 % 60;
horas1 = horas1 % 24;
cout << horas1 << ":" << minutos1 << ":" << segundos1;
return 0;
}
Otra duda que me surge (aunque no aparezca en este ejercicio), es si las constantes es mejor declararlas dentro de main o fuera. Es que me han dejado muy claro que de momento no podemos usar variables globales (solo en casos muy puntuales en los siguientes cursos del grado), pero no han mencionado nada de las constantes. Obviamente le preguntaré al profesor, pero opiniones nunca sobran.