PreTenDer666 Posted February 28, 2006 at 11:54 AM Report #15947 Posted February 28, 2006 at 11:54 AM Boas, estou a tentar fazer um programa para ver quanto tempo irei levar se eu fizer um upload a X kb/s Em minutos ja consegui mas em horas nao,pois o programa nao entende que 60 minutos é 1 hora. Como posso fazer isto? Ex. a 10kb/s demoro 58minutos a 5kb/s demoro 1.93 😄 mas deveria de ser 1h e 56minutos. Alguem me consegue ajudar?
GpL Posted February 28, 2006 at 12:49 PM Report #15958 Posted February 28, 2006 at 12:49 PM Este problema já é um pouco mais complicado que o outro.. não estou a ver agora a solução.. tinha de estudar melhor isso.. veio me à cabeça um algoritemo para isso mas não sei se resultará.. tipo quando a variavel dos minutos for maior que 60 incrementas um valor na variavel horas.. e poe a 0 a variavel minutos e começas a contar outra vez.. e isto sempre assim.. neste ciclo.. o codigo é mais ou menos isto: horas:=0; if minutos>60 then begin minutos:=0; horas:=horas+1; mas tens de ver onde metes isto.. se não conseguires manda me o programa todo para eu tentar resolver isso.. mas tenta sozinho 1o.. cumps
UnKnowN Posted February 28, 2006 at 01:20 PM Report #15964 Posted February 28, 2006 at 01:20 PM GpL explica lá melhor o código ... nao percebi a parte begin minutos:=0; horas:=horas+1;
LuisFilipe Posted February 28, 2006 at 01:53 PM Report #15971 Posted February 28, 2006 at 01:53 PM O melhor mesmo é fazeres uma função para somar tempo H:MM:SS. O meu pascal está muito por baixo mas julgo que com os grupos o o que reio eles chamam a isso (é pá tenho ali uns livros que devem ter isso, vou ali ver já volto) Turbo Building Blocks (Nada, é só mesmo para ir buscar a data e a hora so DOS) Nada mesmo nem no google. Claro que se multiplicares 93 por 0,6 tens 55,8 que arredondado int(55,8 + 0,5) dá 56 o que está certo.
PreTenDer666 Posted February 28, 2006 at 02:09 PM Author Report #15982 Posted February 28, 2006 at 02:09 PM Pois é, isto está dificil e não estou a ver como é que se faz... :down:
NCS_One Posted February 28, 2006 at 02:16 PM Report #15987 Posted February 28, 2006 at 02:16 PM Ois Deves tar a fazer alguma coisa mal, esses minutos nao devem tar la muito bem pq se a 10kb/s levas 58 minutos a 5kb/s devias levar 116 minutos, nao tou a ver onde e como foste buscar esse 1.93 . Se a vida te voltar as costas aproveita e apalpa-lhe o cu.
Tiago Salgado Posted February 28, 2006 at 06:04 PM Report #16012 Posted February 28, 2006 at 06:04 PM Apenas uma correção no codigo q o Gpl indicou: if minutos>60 then terá que ser 59 e não 60 😄 (apenas um pequeno promenor ?)
PreTenDer666 Posted February 28, 2006 at 07:49 PM Author Report #16021 Posted February 28, 2006 at 07:49 PM Bem, em relação a esta questão encontrei uma solução...mas foi sol de pouca-dura...está no exemplo de 116minutos ser 1h e 56m...ora a diferença é de 40. -> 116+40 = 156 mas se for por exemplo 126 minutos ai ja tenho de acrescentar 80 (o dobro) 126+80=206 ou seja 2h e 6minutos e assim continuamente....a cada 60 deve-se acrescentar 40...exemplo 61 minutos será 61+40...121 minutos será 121+80....186 será 186+120...e assim continuamente....alguem achas que com esta formula eu consigo chegar ao k eu queria?Se sim...utilizando k formula?[[ ]]
Tiago Salgado Posted February 28, 2006 at 08:15 PM Report #16022 Posted February 28, 2006 at 08:15 PM Private Sub calc_tempo(ByVal tempo As Integer) 'o parametro "tempo" é passado em numero de minutos Dim hora() As String horas = tempo / 60 hora() = Split(horas, ",") 'faz a divisão do valor guardado na var "horas" e guarda no array o valor inteiro (posicao 0) e o valor decimal (posicao 1) horas = hora(0) 'o nr de horas é atribuido consoante o valor da primeira posicao do array If UBound(hora) = 1 Then hora(1) = "0," & hora(1) minutos = hora(1) * 60 minutos = Round(minutos, 1) If Len(minutos) = 1 Then minutos = "0" & minutos Else minutos = "00" End If MsgBox "horas:" & horas & " minutos:" & minutos End Sub Isto é um exemplo em VB...como ja nao mexo em pascal ha mto tempo e nem sequer tenho aqui algo para testar fiz em VB ... à partida está correcto, mas quem perceba de VB e de Pascal tente passar para Pascal sff Para download duma app com esta função de forma a fazerem o teste está aqui
Warrior Posted February 28, 2006 at 10:27 PM Report #16038 Posted February 28, 2006 at 10:27 PM Isto é mt simples, se eu percebi bem.. Supondo que tens uma variável "m" com os minutos, e que queres colocar em "h" as horas. while (m>=60) do begin h:=h+1; m:=m-60; end; writeln(h,'::',m);
UnKnowN Posted February 28, 2006 at 10:37 PM Report #16040 Posted February 28, 2006 at 10:37 PM Nao percebo o porquê do h+1 e do m-60
Warrior Posted February 28, 2006 at 10:55 PM Report #16049 Posted February 28, 2006 at 10:55 PM Se existirem mais de 60 minutos, nesse caso ele soma uma unidade às horas, e subtrai 60 aos minutos. Isso até os minutos serem inferiores a 60 Outra forma de resolução (mais eficaz e rápida): h:=m div 60; m:=m mod 60; PS: Eu estou a partir do pressuposto que a variável "m" inicia a execução com um número de minutos desconhecido, pode ser 0, 35, 60, ou 150 por exemplo..
UnKnowN Posted March 1, 2006 at 02:10 PM Report #16135 Posted March 1, 2006 at 02:10 PM ah ok já percebi 😄
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now