logotipo Blog Giovani Da Cruz
Algoritmos com Se, Senão e Caso

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

7 min de leitura 558 visualizações

algoritmos teste condicional

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!

Deixe um comentário

Seu e-mail não será publicado.