Fórum Calcular pulso... #211234

03/02/2004

0

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

Responder

Posts

03/02/2004

Beppe

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



Responder

Gostei + 0

03/02/2004

Lucas Silva

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;



Responder

Gostei + 0

03/02/2004

Marconi

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


Responder

Gostei + 0

03/02/2004

Fariasps

valu Marconi, deu certo...


Responder

Gostei + 0

03/02/2004

Fariasps

não deu certo nao,
sabe por que?


Responder

Gostei + 0

03/02/2004

Beppe

?

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


Responder

Gostei + 0

03/02/2004

Fariasps

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


Responder

Gostei + 0

03/02/2004

Beppe

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;



Responder

Gostei + 0

03/02/2004

Fariasps

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

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

até mais


Responder

Gostei + 0

03/02/2004

Beppe

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:


Responder

Gostei + 0

04/02/2004

Fariasps

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar