El problema y su planteamiento
Lee una cantidad de minutos y muéstrala en horas y minutos.
Con 125, muestra:
2 horas y 5 minutos
| Entrada | Proceso | Salida |
|---|---|---|
| Una cantidad de minutos (un número entero). | Dividir entre 60 para obtener las horas completas y sacar el residuo para los minutos que sobran. | El texto con las horas y los minutos, por ejemplo 2 horas y 5 minutos. |
Diagrama de flujo
Así se dibuja el algoritmo: el óvalo marca el inicio y el fin, el paralelogramo es una entrada o una salida, el rectángulo es un proceso y el rombo es una decisión.
Pseudocódigo
Esta es una solución. Léela línea por línea con el diagrama al lado y compara con lo que tú escribirías.
Algoritmo minutos_a_horas
Leer minutos
horas <- Trunc(minutos / 60)
resto <- minutos MOD 60
Escribir horas, " horas y ", resto, " minutos"
FinAlgoritmo
| Entrada | Salida esperada |
|---|---|
| 125 | 2 horas y 5 minutos |
| 185 | 3 horas y 5 minutos |
Con estas entradas, el programa debe mostrar exactamente esa salida.
Cómo pensarlo
En 125 minutos caben 2 horas completas (120 minutos) y sobran 5. Las horas son la parte entera de 125 entre 60, y los minutos que sobran son el residuo de esa división.
En pseudocódigo la parte entera se obtiene con Trunc(minutos / 60), y el residuo con el operador MOD: minutos MOD 60. MOD significa módulo: lo que queda al dividir.
Con menos de 60 minutos, por ejemplo 59, las horas dan 0 y el residuo son los mismos 59 minutos. El programa funciona sin tratar ese caso aparte.
Errores comunes
- Dividir con / y mostrar el resultado completo: 125 / 60 da 2.0833, no 2 horas y 5 minutos.
- Calcular los minutos como minutos - horas: hay que restar horas por 60, o usar MOD.
- Olvidar Trunc: sin él, las horas saldrían con decimales.
El mismo programa en Python
Si más adelante pasas a Python, así se ve la misma lógica. Cambian las palabras (print, input, if) y los bloques se marcan con sangría en lugar de FinSi o FinPara.
# Algoritmo minutos_a_horas
minutos = int(input())
horas = int(minutos / 60)
resto = minutos % 60
print(horas, " horas y ", resto, " minutos", sep="")
Preguntas frecuentes
¿Qué hace MOD en pseudocódigo?
Da el residuo de una división. Por ejemplo, 125 MOD 60 es 5, porque 125 entre 60 es 2 y sobran 5.
¿Cómo obtengo solo la parte entera de una división?
Con la función Trunc, que corta los decimales: Trunc(125 / 60) es 2.