Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Sumar 2 tiempos, ejemplo: 1 hora, 10 min, 5 seg + 3 horas, 70 min, 80 seg

Estas en el tema de Sumar 2 tiempos, ejemplo: 1 hora, 10 min, 5 seg + 3 horas, 70 min, 80 seg en el foro de C/C++ en Foros del Web. Código: int main() { //Declaración de variables int liHoras1, liMinutos1, liSegundos1, liHoras2, liMinutos2, liSegundos2, liHorasTotal, liMinutosTotal, liSegundosTotal; //Entrada de datos printf("Ingrese el tiempo #1 (HH:MM:SS): ...
  #1 (permalink)  
Antiguo 27/01/2015, 18:40
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 5 meses
Puntos: 5
Sumar 2 tiempos, ejemplo: 1 hora, 10 min, 5 seg + 3 horas, 70 min, 80 seg

Código:
int main()
{
    //Declaración de variables
    int liHoras1, liMinutos1, liSegundos1,
        liHoras2, liMinutos2, liSegundos2,
        liHorasTotal, liMinutosTotal, liSegundosTotal;

    //Entrada de datos
    printf("Ingrese el tiempo #1 (HH:MM:SS): ");
    scanf("%d:%d:%d", &liHoras1, &liMinutos1, &liSegundos1);
    printf("Ingrese el tiempo #2 (HH:MM:SS): ");
    scanf("%d:%d:%d", &liHoras2, &liMinutos2, &liSegundos2);

    //Procesamiento
    liHorasTotal = liHoras1 + liHoras2;
    liMinutosTotal = liMinutos1 + liMinutos2;
    liSegundosTotal = liSegundos1 + liSegundos2;

    do
    {
        liMinutosTotal = liMinutosTotal - 60;
        liHorasTotal = liHorasTotal + 1;
    } while (liMinutosTotal >= 60);

    if (liSegundosTotal >= 60)
    {
        liSegundosTotal = liSegundosTotal - 60;
        liMinutosTotal = liMinutosTotal + 1;
    }

    //Salida de datos
    printf("\nResultado: %d:%d:%d\n", liHorasTotal, liMinutosTotal, liSegundosTotal);

    return 0;
}
Hola y gracias de antemano.
Mi código funciona pero, cuando los minutos son altos (ejemplo 200 minutos) se debe hacer algo. Lo único que se me ocurrió fue hacerlo con DO, WHILE para que le valla restando 60 cada vez que se pueda.

La pregunta es: es correcto esto, o hay otra solución usando IF?.
Estoy algo perdido, espero puedan ayudarme.

Gracias!.
  #2 (permalink)  
Antiguo 28/01/2015, 00:51
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Sumar 2 tiempos, ejemplo: 1 hora, 10 min, 5 seg + 3 horas, 70 min, 80 seg

¿Qué tal esto?

Código C:
Ver original
  1. liHorasTotal += liMinutosTotal / 60;
  2. liMinutosTotal %= 60;

Y si quieres incluir los segundos en la operación:

Código C:
Ver original
  1. liMinutosTotal += liSegundosTotal / 60;
  2. liSegundosTotal %= 60;
  3.  
  4. liHorasTotal += liMinutosTotal / 60;
  5. liMinutosTotal %= 60;

No necesita bucles, ni condicionales.

Un saludo
  #3 (permalink)  
Antiguo 28/01/2015, 08:49
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Sumar 2 tiempos, ejemplo: 1 hora, 10 min, 5 seg + 3 horas, 70 min, 80 seg

1. Convierte todo a segundos
2. Sumalos o restalos cualquiera de estas 2 operaciones seran triviales.
3. Al resultado obtén las horas, minutos y segundos.

Dados los segundos obtener las horas, minutos y segundos es increíblemente sencillo.
horas = totalSegundos / 3600
minutos = (totalSegundos % 3600) / 60
segundos = totalSegundos % 60

Etiquetas: ejemplo, funcion, horas, int, min
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:44.