Dúvida de fácil solução - Somar números.......
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
Curtidas 0
Respostas
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:
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.
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