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:
Disculpa este mismo programa pero en Dev C++
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.
Gracias me fue de mucha ayuda
hola como convertir un valor x dado en minutos a horas,dias,semanas,meses
gracias
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.
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
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
Publicar un comentario