• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

superdude

Tradutor de unidades de tempo SS para HH:MM:SS

6 mensagens neste tópico

Este programa é muito básico.

Para quem não souber quantas horas quantos minutos e quantos  segundos são x segundos,

ficam as seguintes linhas de código:

program MinHorSegAtravesDaIntroducaoDosSegundos;
var hor,seg,res: integer;
    min: shortint;
begin
writeln('Introduza o valor de segundos;');
readln(seg);

if (seg=3600) then
begin
   hor:= seg div 3600;
   res:= seg mod 3600;
   if (res>60) then
   begin
        min:= res div 60;
        seg:= res mod 60;
   end
   else
   begin
        min:=0;
        seg:=0;
   end
end
else
begin
     hor:=0;
     if (seg>=60) then
     begin
        min:= seg div 60;
        seg:= seg mod 60;
     end
     else
     begin
          min:= 0;
          seg:= seg;
     end;
end;
writeln('Segundos no formato h:m:s = ',hor,':',min,':',seg);
readln;
end.

:ipool:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está bom!

Mas tem atenção ao Begin End do programa principal... Deve estar como eu escrevi para distinguir dos sub-programas.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esse problema saiu num teste da minha escola do ano passado...xD...

eu consegui fazer mas nao fiz dessa maneira...fiz duma maneira mais basica..(por se assim dizer)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

neste programa ha um pequeno erro, se o pudessem corrigir, pois se usarmos  o valor de 3661s o program irá dar 0:61:1, o que é impossivel, pois nao ha 61 minutos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois... Para qualquer valor superior a 3600 vai dar um resultado errado.

Parece-me que o programa tem ifs a mais, o que só complica e aumenta a probabilidade de se cometerem erros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu tenho um cálculo desses, mas feito em c#, posso mostrar para quem tiver interessado:

            // Valor de Teste
            int segundos = 7280;

            // Cálculo
            int h = segundos / 3600;
            int m = (segundos % 3600) / 60;
            int s = segundos % 60;

            // Comparar Resultados
            Console.WriteLine("{0:00}:{1:00}:{2:00}", h, m, s);
            Console.WriteLine(new TimeSpan(0, 0, segundos));

A última linha é o cálculo feito com a classe timespan do C#, o meu objectivo na altura n era ter isto feito em C#. Era testar o algoritmo para usar numa linguagem sem a classe timespan.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora