Arredondar para o mais proximo multiplo de 5

12/05/2005

0

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: .


Rodrigof

Rodrigof

Responder

Post mais votado

12/05/2005

function ProximoMultiplo5(num: integer) : integer;
begin
  result := num;
  while ((num mod 5) <> 0) do
    num := num + 1;
  
  result := num;
end;



Rjun

Rjun
Responder

Mais Posts

12/05/2005

Rodrigof

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.


Responder

12/05/2005

Rjun

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;



Responder

12/05/2005

Rodrigof

Blz, tópico respondido.. é isso aí Rjun, funcionou direitinho... obrigado. :D


Responder

12/05/2005

Massuda

Uma função mais simples seria...
function ArredondaMultiplo5(Valor: Integer): Integer;
begin
  Result := 5 * ((Valor + 4) div 5);
end;



Responder

12/05/2005

Marco Salles

Plagiando a idéia do massusa

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


Responder

12/05/2005

Massuda

[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.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar