Dúvida de fácil solução - Somar números.......

Delphi

12/04/2004

Er, quero fazer uma procedure que, quando o usuário digitar algum número (exemplo: ´184´), o programa some cada número (1 + 8 + 4). Como faço isso? :oops:


Bfalcon

Bfalcon

Curtidas 0

Respostas

Allen74

Allen74

12/04/2004

Você pode realizar esta operação transformando em string e somando os dígitos ou então trabalhando com inteiro e utilizando a base 10 para calcular, que é mais rápido. Veja as duas formas:
function SomaDigitosStr (num : string) : longint;
var
  i : integer;
begin
  result := 0;
  for i := 1 to length(num) do
    if num[i] in [´0´..´9´] // somar apenas números :b
    then result := result + ord(num[i]) - ord(´0´);
end;

function SomaDigitos (num : longint) : longint;
begin
  result := 0;
  num := abs(num); // somente interessa números positivos
  while num <> 0 do
  begin
    result := result + num mod 10;
    num := num div 10;
  end;
end;

Se você precisa repetir a operação muitas vezes e deseja ter maior velocidade, a segunda função é recomendada, desde que a representação do número não exceda o limite de armazenamento do tipo longint.

A primeira função, apesar de ser mais lenta, não possui esta limitação, sendo que você pode passar como parâmetro uma string contendo números de quantos dígitos quiser. Ela somente é limitada pelo tipo do retorno (longint), ou seja, a soma dos dígitos não poderá ultrapassar o valor: 2147483647.


GOSTEI 0
POSTAR