Calcular pulso...

Delphi

03/02/2004

Quero calcular o tempo gasto de uma ligação local. A cada 4 minutos gasta-se R$ 0,12, até ai tudo bem, acontece que se passar de 4 minutos já são R$ 0,24 até 8 minutos e assim por diante.
Como faço para que o Delphi calcule isso?
Uma ligação de 03 Min = R$ 0,12
Uma ligação de 05 Min = R$ 0,24
Uma ligação de 07 Min = R$ 0,24
Uma ligação de 13 Min = R$ 0,48

Desde já, obrigado...


Fariasps

Fariasps

Curtidas 0

Respostas

Beppe

Beppe

03/02/2004

Sei lá, tenta isso:
Succ(Trunc(Min) shr 2) * 0.12



GOSTEI 0
Lucas Silva

Lucas Silva

03/02/2004

function TForm1.CalculaLigacao(Tempo: Integer): Real
begin

  case tempo of
    03: Result := 0,12;
    05: Result := 0,24;
    07: Result := 0,24;   
    13: Result := 0,48;

  end;

end;



GOSTEI 0
Marconi

Marconi

03/02/2004

Pelo que entendi, ela custa R$ 0,12 a cada 4 minutos.


Function ValorDaLigação(tempo:Integer):real;
begin
result:=(tempo div 4)*0.12 ;
if (tempo mod 4)>0 then result:=result + 0.12;
end;

Ou seja o valor aumente em 12 centavos a cada 4 minutos.
Se o tempo passar de múltiplos de 4, acrestamos + 12 centavos.

Na verdade é bem melhor voce substituir o número 0.12 por um campo onde voce possa cadastrar a taxa. Quando ela variar bastaria cadastrar o novo valor, sem precisar mexer no programa.

Espero ter ajudado

Marconi


GOSTEI 0
Fariasps

Fariasps

03/02/2004

valu Marconi, deu certo...


GOSTEI 0
Fariasps

Fariasps

03/02/2004

não deu certo nao,
sabe por que?


GOSTEI 0
Beppe

Beppe

03/02/2004

?

O que eu te respondi, não funcionou não?


GOSTEI 0
Fariasps

Fariasps

03/02/2004

vou tentar agora...
te respondo já...


GOSTEI 0
Beppe

Beppe

03/02/2004

me dar uma esplicadinha, onde coloco... valeu


É uma expressão. Utilize-a para retorna o valor tarifado. Min é o tempo em minutos.

Ex:
var
  Min, Valor: Double;
begin
  ...
  Valor := Succ(Trunc(Min) shr 2) * 0.12;
  ...
end;



GOSTEI 0
Fariasps

Fariasps

03/02/2004

valeu cara deu certo mesmo, agora deu...
obrigado...

mais, se nao for pedir muito, o que é esse 2 depois do shr

até mais


GOSTEI 0
Beppe

Beppe

03/02/2004

O operador [b:ce47febea0]shr[/b:ce47febea0] significa shift right(empurra pra direita). Ele ´deleta´ alguns bits(neste caso) da direita na representação binária.
A expressão (A shr B) é a mesma* coisa que (A div (2 elevado à B)).

* Tem uma diferença pra números com e sem sinal, mas deixa isso pra lá.

valeu cara deu certo mesmo, agora deu...

Se tivesse feito como eu disse logo, já teria pronto a muito tempo... :cry:


GOSTEI 0
Fariasps

Fariasps

03/02/2004

obrigado cara,
voce me ajudou muito
valeu
até mas...


GOSTEI 0
POSTAR