Arredondar para o mais proximo multiplo de 5
eae galera :D , obdecendo as regras de conduta nao encontrei a solução para meu problema, por isso estou criando este.
preciso Arredondar um valor para o mais proximo multiplo de 5.
ex: Se eu digitar :
3 o valor vai para 5 ou;
2 o valor vai para 0 ou;
7 o valor vai para 5 ou;
8 o valor vai para 10 ou;
151 o valor vai para 150 ou;
153 o valor vai para 155 ou;
157 o valor vai para 155 ou;
e se eu digitar:
155 o valor continua 155 ou;
60 o valor continua 60;
como posso fazer isso? alguem pode ajudar?
agradeço :wink: .
preciso Arredondar um valor para o mais proximo multiplo de 5.
ex: Se eu digitar :
3 o valor vai para 5 ou;
2 o valor vai para 0 ou;
7 o valor vai para 5 ou;
8 o valor vai para 10 ou;
151 o valor vai para 150 ou;
153 o valor vai para 155 ou;
157 o valor vai para 155 ou;
e se eu digitar:
155 o valor continua 155 ou;
60 o valor continua 60;
como posso fazer isso? alguem pode ajudar?
agradeço :wink: .
Rodrigof
Curtidas 0
Melhor post
Rjun
12/05/2005
function ProximoMultiplo5(num: integer) : integer; begin result := num; while ((num mod 5) <> 0) do num := num + 1; result := num; end;
GOSTEI 1
Mais Respostas
Rodrigof
12/05/2005
Rjun, realmente a função é multiplo de 5, valeu a dica mas não é bem assim, no seu exemplo se eu digitar:
1 já pula para 5 ou
6 já pula para 10
Preciso assim se eu digitar :
3 o valor vai para 5 ou;
2 o valor vai para 0 ou;
7 o valor vai para 5 ou;
8 o valor vai para 10 ou;
151 o valor vai para 150 ou;
153 o valor vai para 155 ou;
157 o valor vai para 155 ou;
e se eu digitar:
155 o valor continua 155 ou;
60 o valor continua 60;
flw.
1 já pula para 5 ou
6 já pula para 10
Preciso assim se eu digitar :
3 o valor vai para 5 ou;
2 o valor vai para 0 ou;
7 o valor vai para 5 ou;
8 o valor vai para 10 ou;
151 o valor vai para 150 ou;
153 o valor vai para 155 ou;
157 o valor vai para 155 ou;
e se eu digitar:
155 o valor continua 155 ou;
60 o valor continua 60;
flw.
GOSTEI 0
Rjun
12/05/2005
function Multiplo5(num: integer): integer; var begin tempnum := num; continf := 0; contsup := 0; temp := 0; while ((tempnum mod 5) <> 0) do tempnum := tempnum + 1; contsup := tempnum - num; temp := tempnum; tempnum := num; while ((tempnum mod 5) <> 0) do tempnum := tempnum - 1; continf := num - tempnum; if continf < contsup then result := tempnum else result := temp; end;
GOSTEI 0
Rodrigof
12/05/2005
Blz, tópico respondido.. é isso aí Rjun, funcionou direitinho... obrigado. :D
GOSTEI 0
Massuda
12/05/2005
Uma função mais simples seria...
function ArredondaMultiplo5(Valor: Integer): Integer; begin Result := 5 * ((Valor + 4) div 5); end;
GOSTEI 0
Marco Salles
12/05/2005
Plagiando a idéia do massusa
Para valor 6,7 Ja pula para 10 etc...
Para nun acontecer isto , sugiro uma pequena alteração:
e so uma pequena alteração , que pode ter passado despercebido pelo amigo massuda e talves encaixe mais na necessidade do amigo rodrigof
function ArredondaMultiplo5(Valor: Integer): Integer; begin Result := 5 * ((Valor + 4) div 5); end;
realmente a função é multiplo de 5, valeu a dica mas não é bem assim, no seu exemplo se eu digitar:
1 já pula para 5 ou
6 já pula para 10
Para valor 6,7 Ja pula para 10 etc...
Para nun acontecer isto , sugiro uma pequena alteração:
function ArredondaMultiplo5(Valor: Integer): Integer; begin Result := 5 * ((Valor + 2) div 5); end;
e so uma pequena alteração , que pode ter passado despercebido pelo amigo massuda e talves encaixe mais na necessidade do amigo rodrigof
GOSTEI 0
Massuda
12/05/2005
[quote:2b9e713e5f=´Marco Salles´]...pode ter passado despercebido pelo amigo massuda e talves encaixe mais na necessidade do amigo rodrigof[/quote:2b9e713e5f]Não tinha percebido esse detalhe... obrigado pela correção.
GOSTEI 0