Faça um procedimento que transforme e mostre segundos em horas, minutos em segundos. Todas as variáveis devem ser passadas como parâmetros, não havendo variáveis globais.

Passo 1

Beleza, a questão pede pra gente criar um procedimento que receba um valor em segundos e transforme isso em horas, minutos e segundos, mostrando o resultado. O conteúdo envolvido é aritmética de inteiros (divisão inteira e resto da divisão) e passagem de parâmetros em procedimentos, sem usar variável global.

Passo 2

Antes de tudo, vamos entender duas operações básicas:
  • Divisão inteira (div): quando você faz, por exemplo, 7 div 3, o resultado é 2 (a parte inteira).
  • Resto da divisão (mod): quando você faz 7 mod 3, o resultado é 1 (o que sobra).
Na teoria de números, se quociente = lfloor Sd rfloor, resto = S bmod d é o total de segundos, aí vale:

Passo 3

Calcular as horas a partir de H = lfloor S3600 rfloor :
ou, em código,
Horas := TotalSegundos div 3600;

Passo 4

Depois de tirar as horas, sobra um resto de segundos que a gente usa pra achar os minutos. Primeiro o resto:
R = S bmod 3600
Para achar os minutos:
M = lfloor R60 rfloor
em código:
Resto := TotalSegundos mod 3600;
Minutos := Resto div 60;

Passo 5

Finalmente, o que sobrou depois de tirar os minutos é o número de segundos:
Sfinal = R bmod 60
em código:
Segundos := Resto mod 60;

Passo 6

Agora que sabemos as fórmulas, é só montar o procedimento passando tudo por parâmetro. Em Pascal, por exemplo, ficaria assim:

Resposta

procedure ConverteSegundos(TotalSegundos: Integer;
                           var Horas, Minutos, Segundos: Integer);
var
  Resto: Integer;
begin
  // calcula horas
  Horas := TotalSegundos div 3600;
  // calcula o que sobra depois de tirar as horas
  Resto := TotalSegundos mod 3600;
  // calcula minutos a partir desse resto
  Minutos := Resto div 60;
  // o que sobra depois dos minutos são os segundos finais
  Segundos := Resto mod 60;
  // mostra o resultado
  Writeln('Horas: ', Horas,
          ', Minutos: ', Minutos,
          ', Segundos: ', Segundos);
end;

Exercícios relacionados