Pages

miércoles, 6 de febrero de 2013

Convertir segundos a semanas, días, horas, minutos. Codigo en C

Enunciado
Realice un programa en lenguaje C, que permita al usuario ingresar por teclado una cierta cantidad de segundos y muestre su equivalente en semanas, días, horas, minutos y segundos, según el siguiente formato:
Entrada:
Introduzca los segundos: 12345678
Salida:
>> Los 12345678 equivalen a: 20 semanas, 2 dias y  21h : 21m : 18s
Código Fuente en C
#include <iostream>
#include <iomanip>
using namespace std ;

const int SEG_MIN = 60;
const int MIN_HORA = 60;
const int HORAS_DIA = 24;
const int DIAS_SEMANA = 7;

const int SEG_HORA = SEG_MIN * MIN_HORA ;
const int SEG_DIA = SEG_HORA * HORAS_DIA ;
const int SEG_SEMANA = SEG_DIA * DIAS_SEMANA ;

int main ()
{
    cout << "Introduzca los segundos: " ;
    int segundos_totales ;
    cin >> segundos_totales ;

    int semanas = segundos_totales / SEG_SEMANA ;
    int resto = segundos_totales % SEG_SEMANA ;

    int dias = resto / SEG_DIA ;
    resto = resto % SEG_DIA ;

    int horas = resto / SEG_HORA ;
    resto = resto % SEG_HORA ;
    int minutos = resto / SEG_MIN ;
    int segundos = resto % SEG_MIN ;

    cout << "\n>> Los " <<segundos_totales << " equivalen a: "
         << semanas << " semanas, "
         << dias << " dias y  "
         << horas << "h : "
         << minutos << "m : "
         << segundos << "s" << endl ;

    return 0;
}

8 comentarios:

  1. Disculpa este mismo programa pero en Dev C++

    ResponderEliminar
  2. pues buscando no encontre una solucion que me diera una respuesta convincente todas las soluciones las hacen en base a aproximaciones y calculos automaticos pero no son reales, aqui tengo una solucion que es real.


    notas:
    label4 es donde muestro el resultado
    DateTimePicker1 y DateTimePicker2 es donde consigo las fechas a comparar.



    Private Sub seteodeprimerapagina()
    If DateTimePicker1.Value > DateTimePicker2.Value Then
    Me.Label4.Text = "Error - en fechas"
    Else
    Dim FECHA3, NewDateTime As Date
    Dim ANNO1, ANNO2, MES1, MES2, DIA1, DIA2, CANANNO, CANMES, CANDIA As Integer

    FECHA3 = DateTimePicker1.Value
    ANNO1 = DateAndTime.Year(DateTimePicker1.Value)
    ANNO2 = DateAndTime.Year(DateTimePicker2.Value)
    MES1 = DateAndTime.Month(DateTimePicker1.Value)
    MES2 = DateAndTime.Month(DateTimePicker2.Value)
    DIA1 = DateAndTime.Day(DateTimePicker1.Value)
    DIA2 = DateAndTime.Day(DateTimePicker2.Value)

    Select Case ANNO2
    Case > ANNO1
    Select Case MES2
    Case >= MES1
    CANANNO = ANNO2 - ANNO1
    Select Case DIA2
    Case >= DIA1
    CANMES = MES2 - MES1
    CANDIA = DIA2 - DIA1
    Case < DIA1
    CANMES = 0
    If MES1 = 12 Then
    NewDateTime = New Date(ANNO1 + 1, MES1, 1)
    Else
    NewDateTime = New Date(ANNO1, MES1 + 1, 1)
    End If
    CANDIA = DateAndTime.DateDiff(DateInterval.Day, FECHA3, NewDateTime) + DIA2
    End Select
    Case < MES1
    CANANNO = (ANNO2 - ANNO1) - 1
    CANMES = (12 - MES1) + MES2
    Select Case DIA2
    Case >= DIA1
    CANDIA = DIA2 - DIA1
    Case < DIA1
    If MES1 = 12 Then
    NewDateTime = New Date(ANNO1 + 1, MES1, 1)
    Else
    NewDateTime = New Date(ANNO1, MES1 + 1, 1)
    End If
    CANDIA = DateAndTime.DateDiff(DateInterval.Day, FECHA3, NewDateTime) + DIA2
    End Select
    End Select
    Case = ANNO1
    CANANNO = 0

    Select Case DIA2
    Case >= DIA1
    CANMES = MES2 - MES1
    CANDIA = DIA2 - DIA1
    Case < DIA1
    CANMES = 0
    If MES1 = 12 Then
    NewDateTime = New Date(ANNO1 + 1, MES1, 1)
    Else
    NewDateTime = New Date(ANNO1, MES1 + 1, 1)
    End If
    CANDIA = DateAndTime.DateDiff(DateInterval.Day, FECHA3, NewDateTime) + DIA2
    End Select
    End Select

    Me.Label4.Text = ""
    If CANANNO > 0 Then
    Me.Label4.Text = CType(CANANNO, String)
    If CANANNO > 1 Then
    Me.Label4.Text = Me.Label4.Text + " Años"
    Else
    Me.Label4.Text = Me.Label4.Text + " Año"
    End If
    End If

    If CANANNO > 0 And CANMES > 0 Then
    Me.Label4.Text = Me.Label4.Text + " - "
    End If

    If CANMES > 0 Then
    Me.Label4.Text = Me.Label4.Text + CType(CANMES, String)
    If CANMES > 1 Then
    Me.Label4.Text = Me.Label4.Text + " Meses"
    Else
    Me.Label4.Text = Me.Label4.Text + " Mes"
    End If
    End If

    If CANMES > 0 And CANDIA > 0 Then
    Me.Label4.Text = Me.Label4.Text + " - "

    Else
    If CANANNO > 0 And CANDIA > 0 Then
    Me.Label4.Text = Me.Label4.Text + " - "
    End If

    End If

    If CANDIA > 0 Then
    Me.Label4.Text = Me.Label4.Text + CType(CANDIA, String)
    If CANDIA > 1 Then
    Me.Label4.Text = Me.Label4.Text + " Dias"
    Else
    Me.Label4.Text = Me.Label4.Text + " Dia"
    End If
    End If

    End If

    End Sub




    Espero les ayude se que no esta optimizada por que estoy empezando a aprender visual basic pero se que a mas de alguien sacara de problemas ya que a mi ninguna solucion me sirvio.

    ResponderEliminar
  3. Gracias me fue de mucha ayuda

    ResponderEliminar
  4. hola como convertir un valor x dado en minutos a horas,dias,semanas,meses

    ResponderEliminar
  5. 4. Escribe un programa que pida al usuario los siguientes datos: días, horas y minutos. Y le conteste con la cantidad de segundos totales que son esos datos.

    ResponderEliminar
  6. Hola, estoy haciendo un programa que convierte segundos a minutos y horas. Tengo la tarea de ahora agregarle los días con el bucle While, pero no sé cómo hacerlo, alguien podría ayudarme, voy iniciando

    ResponderEliminar
  7. HOLA Estoy haciendo: un programa de desglose cierta cantidad de segundos introducida por teclado en su
    equivalente en semanas, días, horas, minutos y segundos

    ResponderEliminar