Convertir segundos a horas, minutos y segundos

Como les prometí en el post anterior, en este post vamos a hablar sobre un programa que usa los operadores compuestos de manera muy útil: convierte los segundos en horas minutos y segundos.

El programa es este:

#include 
using namespace std;

int main()
{
    int sec, hr, min;
    cout <> sec;
    cout << sec << " segundos son ";
    hr = sec / (60*60);
    sec %= 60*60;
    min = sec / 60;
    sec %= 60;
    cout << hr << " horas " << min << " minutos y " << sec << " segundos" << endl;
}

Primero dividimos los segundos sec entre 60*60 (3600) para obtener los horas y lo guardamos en hr. Noten que la variable sec no cambia.

Luego obtenemos el residuo de dividir sec / 60*60 (es lo que el operador % hace) y lo guardamos en la misma variable. En este paso sí modificamos la variable sec, ahora contiene los segundos iniciales menos las horas que ya obtuvimos en el paso anterior.

Ahora dividimos nuevamente la variable sec / 60 para obtener los minutos y lo guardamos en hr. La variable sec no cambia.

Luego obtenemos el residuo de dividir sec / 60 (es lo que el operador % hace) y lo guardamos en la misma variable. En este paso sí modificamos la variable sec, ahora contiene los segundos iniciales menos las horas menos los minutos.

Ya sólo mostramos las tres variable y listo.

Ahora, si somos de los que nos preocupamos por el lenguaje, veremos que a veces hay errores de ortografía como “1 minutos”. Para solucionar eso sólo necesitamos unos cuantos ifs:

#include 
using namespace std;

int main()
{
    int sec, hr, min;
    cout <> sec;
    cout << sec << " segundos son ";
    hr = sec / (60*60);
    sec %= 60*60;
    min = sec / 60;
    sec %= 60;
    cout << hr << " hora";
    if(hr != 1) cout << "s";
    cout << " " << min << " minuto";
    if(min != 1) cout << "s";
    cout << " y " << sec << " segundo";
    if(sec != 1) cout << "s";
}

33 thoughts on “Convertir segundos a horas, minutos y segundos

    1. El programa está bien, ¿quieres que te enseñe a compilar? ¿o de plano necesitas que te enseñe a copiar y pegar? Y de una vez te aviso que otro comentario tuyo de ese tipo no va a ser publicado.

    1. Aquí en la barra de la derecha está tu respuesta:
      ¿Tu progama corre pero al presionar enter se cierra sin mostrar los resultados?, sólo agrega cin.get();cin.get(); antes de la llave de cierre del main.

  1. Hola que tal tengo una duda, esto me puede servir para hacer ocnversion del sistema metrico decimal al sistema metrico ingles? obvio cambiando las declaraciones?

  2. me gustaria que alguien me esplicara esta ejercicio por que no lo se interpretar.
    a)3h 26’+ 96+1h 19’=pasarlo a horas y minutos

  3. buen aporte cuate… de veras muchas gracias.. me ayudo para una tarea…. segui cuate…. eres mega super.. saludos..

  4. Muy bueno el curso; estoy estudiando Ingenieria y realmente me ayudas mucho con el C, ya que es el lenguaje que enseñan en informatica. Muchas gracias, buenisimos los ejemplos de conversion. Te seguiré leyendo. Saludos desde Bariloche, en la Patagonia Argentina.

  5. oye disculpa sabras como mostrar ese codigo pero en visual basic lo trate de transformar pero esta enredado

  6. ola disculpa me puedes ayudar tengo que hacer uno similar pero que incluya años meses semanas y dias y claro tambien horas minutos y segundos

  7. Muchas gracias!! me ayudo a comprender algunas cosas del programa como el trabajo de las librerias y otras cosas… gracias de verdad!! bendiciones!

  8. EJERCICIOS CONDICIONALES PARTE 1
    1. Determinar si un número entero positivo es exactamente divisible por 5.
    2. Averiguar si dados dos números, uno es divisor de otro.
    3. Hacer un programa considerando el año actual donde considere a las personas según su año de nacimiento en qué etapa de su vida están, (niñez, adolescencia, juventud, adultez y senectud).
    4. Ingresar el número del mes y determinar cuántos días tiene el mes.
    5. Ingresar el día, mes y año en el formato numérico (2-11-2001), para luego mostrarlo el formato carácter (2 de Noviembre del 2001).
    6. Dada la duración en minutos de una llamada calcular el costo, considerando:
    a. Hasta tres minutos el costo es 0.50
    b. Por encima de tres minutos es 0.50 más 0.1*cada minuto adicional a los tres primeros
    7. Dado el monto de una compra calcular y mostrar el descuento considerando:
    a. El descuento es del 20% si el monto es mayor a 200 pesos
    b. El descuento es del 10% si el monto es mayor o igual a 100 pesos y menor o igual a 200 pesos
    c. No hay descuento si el monto es menor a 100 pesos
    8. El domingo de pascua es el primer domingo después de la primera luna llena posterior al equinoccio de primavera, y se determina mediante el siguiente cálculo sencillo:
    A= año % 19
    B=año %4
    C=año%7
    D=(19*A+24)%30
    E=(2*B+4*C+6*D+5)%7
    N=(22+D+E)
    Donde N indica el número de día del mes de marzo (si N es igual o menor que 31) o abril (si es mayor que 31). Construir un programa que determine las fechas de domingos de pascua.
    9. Convertir un dígito en su expresión alfabética. Es decir, si el usuario teclea el número 1, el programa deberá escribir el texto “Uno”.
    10. A un trabajador le descuentan de su sueldo el 5% si su sueldo es menor o igual a 1000. Por encima de 1000 y hasta 2000 el 10% y por encima de 2000 el 15%. Calcular el descuento y sueldo neto que recibe el trabajador dado su sueldo.

  9. ola nesecito por fa un algoritmo “dado un tiempo en segundos calcular cuantos segundos faltan para convertirse en minutos” que sea en pseint graxias por su ayuda

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s