Calcular pulso...
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...
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
Curtidas 0
Respostas
Beppe
03/02/2004
Sei lá, tenta isso:
Succ(Trunc(Min) shr 2) * 0.12
GOSTEI 0
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
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
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
03/02/2004
valu Marconi, deu certo...
GOSTEI 0
Fariasps
03/02/2004
não deu certo nao,
sabe por que?
sabe por que?
GOSTEI 0
Beppe
03/02/2004
?
O que eu te respondi, não funcionou não?
O que eu te respondi, não funcionou não?
GOSTEI 0
Fariasps
03/02/2004
vou tentar agora...
te respondo já...
te respondo já...
GOSTEI 0
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
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
obrigado...
mais, se nao for pedir muito, o que é esse 2 depois do shr
até mais
GOSTEI 0
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á.
Se tivesse feito como eu disse logo, já teria pronto a muito tempo... :cry:
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
03/02/2004
obrigado cara,
voce me ajudou muito
valeu
até mas...
voce me ajudou muito
valeu
até mas...
GOSTEI 0