Exercício: calcular o segundo seguinte de um horário

Fala galera da programação, tudo beleza?
Neste exercício envolvendo horas, será necessário utilizar testes condicionais (if) para verificar se o horário informado é válido e também para avaliar se ocorreu a virada do dia (meia-noite).
Como opção, considere uma maneira de exibir o horário no formato: hh:mm:ss.
Vamos ao código!
Exemplo em C / C++
/******************************************************************************
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
*******************************************************************************/
#include <iostream>
#include <iomanip> // Para manipulação de saída formatada
using namespace std;
int main() {
int hora, minuto, segundo;
// Leitura do horário
cout << "Digite a hora (0-23): ";
cin >> hora;
cout << "Digite os minutos (0-59): ";
cin >> minuto;
cout << "Digite os segundos (0-59): ";
cin >> segundo;
// Verificação se o horário está na faixa válida
if (hora < 0 || hora > 23 || minuto < 0 || minuto > 59 || segundo < 0 || segundo > 59) {
cout << "Horário inválido. Certifique-se de que os valores estão dentro da faixa permitida." << endl;
return 1; // Encerra o programa com código de erro
}
// Incremento do segundo
segundo++;
// Verificação e ajuste se necessário
if (segundo == 60) {
segundo = 0;
minuto++;
if (minuto == 60) {
minuto = 0;
hora++;
if (hora == 24) {
hora = 0;
}
}
}
/* Exibição do horário resultante
Aqui fiz um tratamento para apresentar o
horário no formato: hh:mm:ss */
cout << "O horário seguinte é: " << setw(2) << setfill('0') << hora << ":"
<< setw(2) << setfill('0') << minuto << ":" << setw(2) << setfill('0') << segundo << endl;
return 0; // Encerra o programa com sucesso
}
Este programa solicita ao usuário que insira uma hora, minuto e segundo, verifica se os valores estão na faixa válida e, em seguida, calcula o horário seguinte. O resultado é exibido na tela.
Também foi utilizado a biblioteca iomanip para formatar a saída e garantir que as horas, minutos e segundos sempre tenham dois dígitos, preenchendo com zero à esquerda, se necessário.
Exemplo em Pascal / Delphi / Lazarus
{
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
}
program HorarioSeguinte;
uses
SysUtils;
var
hora, minuto, segundo: Integer;
begin
// Leitura do horário
Write('Digite a hora (0-23): ');
ReadLn(hora);
Write('Digite os minutos (0-59): ');
ReadLn(minuto);
Write('Digite os segundos (0-59): ');
ReadLn(segundo);
// Verificação se o horário está na faixa válida
if ( (hora < 0) or (hora > 23) or (minuto < 0) or (minuto > 59) or (segundo < 0) or (segundo > 59) ) then
begin
WriteLn('Horário inválido. Certifique-se de que os valores estão dentro da faixa permitida.');
Exit; // Encerra o programa com código de erro
end;
// Incremento do segundo
segundo := segundo + 1;
// Verificação e ajuste se necessário
if segundo = 60 then
begin
segundo := 0;
minuto := minuto + 1;
if minuto = 60 then
begin
minuto := 0;
hora := hora + 1;
if hora = 24 then
begin
hora := 0;
end;
end;
end;
// Exibição do horário resultante
WriteLn('O horário seguinte é: ', Format('%2.2d:%2.2d:%2.2d', [hora, minuto, segundo]));
end.
Este programa em Pascal faz basicamente a mesma coisa que o programa em C++. Note que a função Format é usada para formatar a saída e garantir que as horas, minutos e segundos sempre tenham dois dígitos, preenchendo com zero à esquerda, se necessário.
Também utilizei a biblioteca SysUtils, ação necessária para poder utilizar a função Format.
Exemplo em Python
'''
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
'''
# Função para verificar e ajustar o horário
def ajustar_horario(hora, minuto, segundo):
segundo += 1
if segundo == 60:
segundo = 0
minuto += 1
if minuto == 60:
minuto = 0
hora += 1
if hora == 24:
hora = 0
return hora, minuto, segundo
# Leitura do horário
hora = int(input("Digite a hora (0-23): "))
minuto = int(input("Digite os minutos (0-59): "))
segundo = int(input("Digite os segundos (0-59): "))
# Verificação se o horário está na faixa válida
if 0 <= hora <= 23 and 0 <= minuto <= 59 and 0 <= segundo <= 59:
# Ajuste do horário
hora, minuto, segundo = ajustar_horario(hora, minuto, segundo)
# Exibição do horário resultante
print(f"O horário seguinte é: {hora:02d}:{minuto:02d}:{segundo:02d}")
else:
print("Horário inválido. Certifique-se de que os valores estão dentro da faixa permitida.")
Neste código em Python, a função ajustar_horario é responsável por incrementar os segundos e ajustar os minutos e horas conforme necessário. A formatação do horário resultante é feita utilizando as f-strings para garantir que os valores tenham dois dígitos, preenchendo com zero à esquerda, se necessário.
Exemplo em C#
/******************************************************************************
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
*******************************************************************************/
using System;
class Program
{
// Função para verificar e ajustar o horário
static Tuple<int, int, int> AjustarHorario(int hora, int minuto, int segundo)
{
segundo++;
if (segundo == 60)
{
segundo = 0;
minuto++;
if (minuto == 60)
{
minuto = 0;
hora++;
if (hora == 24)
{
hora = 0;
}
}
}
return Tuple.Create(hora, minuto, segundo);
}
static void Main()
{
// Leitura do horário
Console.Write("Digite a hora (0-23): ");
int hora = int.Parse(Console.ReadLine());
Console.Write("Digite os minutos (0-59): ");
int minuto = int.Parse(Console.ReadLine());
Console.Write("Digite os segundos (0-59): ");
int segundo = int.Parse(Console.ReadLine());
// Verificação se o horário está na faixa válida
if (hora >= 0 && hora <= 23 && minuto >= 0 && minuto <= 59 && segundo >= 0 && segundo <= 59)
{
// Ajuste do horário
var horarioAjustado = AjustarHorario(hora, minuto, segundo);
// Exibição do horário resultante
Console.WriteLine($"O horário seguinte é: {horarioAjustado.Item1:D2}:{horarioAjustado.Item2:D2}:{horarioAjustado.Item3:D2}");
}
else
{
Console.WriteLine("Horário inválido. Certifique-se de que os valores estão dentro da faixa permitida.");
}
}
}
Neste código em C#, a função AjustarHorario é responsável por incrementar os segundos e ajustar os minutos e horas conforme necessário. A formatação do horário resultante é feita utilizando interpolação de strings ($"") para garantir que os valores tenham dois dígitos, preenchendo com zero à esquerda, se necessário.
Exemplo em Java
/******************************************************************************
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
*******************************************************************************/
import java.util.Scanner;
public class HorarioSeguinte {
// Função para verificar e ajustar o horário
static int[] ajustarHorario(int hora, int minuto, int segundo) {
segundo++;
if (segundo == 60) {
segundo = 0;
minuto++;
if (minuto == 60) {
minuto = 0;
hora++;
if (hora == 24) {
hora = 0;
}
}
}
return new int[]{hora, minuto, segundo};
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Leitura do horário
System.out.print("Digite a hora (0-23): ");
int hora = scanner.nextInt();
System.out.print("Digite os minutos (0-59): ");
int minuto = scanner.nextInt();
System.out.print("Digite os segundos (0-59): ");
int segundo = scanner.nextInt();
// Verificação se o horário está na faixa válida
if (hora >= 0 && hora <= 23 && minuto >= 0 && minuto <= 59 && segundo >= 0 && segundo <= 59) {
// Ajuste do horário
int[] horarioAjustado = ajustarHorario(hora, minuto, segundo);
// Exibição do horário resultante
System.out.printf("O horário seguinte é: %02d:%02d:%02d%n", horarioAjustado[0], horarioAjustado[1], horarioAjustado[2]);
} else {
System.out.println("Horário inválido. Certifique-se de que os valores estão dentro da faixa permitida.");
}
}
}
Neste código em Java, a função ajustarHorario é responsável por incrementar os segundos e ajustar os minutos e horas conforme necessário. A formatação do horário resultante é feita utilizando printf para garantir que os valores tenham dois dígitos, preenchendo com zero à esquerda, se necessário.
Beleza pessoal? Espero que tenham gostado.
Dúvidas ou sugestão de outras linguagens? Deixe o seu comentário!
Um abraço e até o próximo post. Valeu!