



Fala galera do Show Delphi, tudo beleza?
Hoje vamos ver como mostrar programas que verificam se um número é ou não um número feliz na matemática.
Caso você queria saber mais sobre a definição de número feliz segundo a matemática, recomendo a leitura do post específico sobre o assunto no site Giovani Da Cruz:
Agora vamos as códigos!!!
(* Criado pelo professor Giovani Da Cruz https:// giovanidacruz.com.br *) program NumeroFeliz; uses SysUtils; function CalcularSomaDosQuadrados(n: Integer): Integer; var soma, digito: Integer; begin soma := 0; while n > 0 do begin digito := n mod 10; soma := soma + (digito * digito); n := n div 10; end; CalcularSomaDosQuadrados := soma; end; function EstaNoArray(const numero: Integer; const arr: array of Integer): Boolean; var i: Integer; begin for i := Low(arr) to High(arr) do begin if arr[i] = numero then begin EstaNoArray := True; Exit; end; end; EstaNoArray := False; end; function EhNumeroFeliz(n: Integer): Boolean; var numerosVistos: array of Integer; begin SetLength(numerosVistos, 0); // Inicializa o array vazio while (n <> 1) and (not EstaNoArray(n, numerosVistos)) do begin // Adiciona o número atual ao array SetLength(numerosVistos, Length(numerosVistos) + 1); numerosVistos[High(numerosVistos)] := n; n := CalcularSomaDosQuadrados(n); end; EhNumeroFeliz := (n = 1); end; var numero: Integer; begin Write('Digite um número: '); Readln(numero); if EhNumeroFeliz(numero) then Writeln(numero, ' é um número feliz!') else Writeln(numero, ' não é um número feliz.'); Readln; end. |
Obs:
Se você tiver problemas com a acentuação, utilize UTF8ToAnsi nos comandos Write para corrigir.
NumeroFeliz
)
program NumeroFeliz;
.CalcularSomaDosQuadrados
CalcularSomaDosQuadrados
é definida para calcular a soma dos quadrados dos dígitos de um número inteiro.n
como parâmetro.soma
é inicializada como 0 para acumular a soma.while
é usado para percorrer os dígitos do número n
.n
é obtido usando a operação n mod 10
, e o quadrado desse dígito é adicionado à variável soma
.n
usando n div 10
.soma
.EhNumeroFeliz
EhNumeroFeliz
verifica se um número é feliz ou não.n
como parâmetro.numerosVistos
é inicializada como um conjunto vazio (um conjunto é usado para armazenar números únicos que já foram vistos).while
, o código verifica duas condições: se n
não é igual a 1 e se n
não está no conjunto numerosVistos
. Se ambas as condições forem verdadeiras, o loop continua.n
é adicionado ao conjunto numerosVistos
para rastrear que este número já foi processado.n
é então atualizado chamando a função CalcularSomaDosQuadrados(n)
, que retorna a soma dos quadrados dos dígitos de n
.n
seja igual a 1 ou até que n
seja um número que já foi visto (indicando um ciclo infinito). Nesse ponto, o loop para.True
se n
for igual a 1, o que significa que o número é feliz, e False
caso contrário.numero
é declarada para armazenar o número que o usuário deseja verificar.Write('Digite um número: ')
e lê o valor digitado na variável numero
.EhNumeroFeliz(numero)
para verificar se o número é feliz ou não.Write
.Readln;
. Isso permite que o usuário veja a saída antes de fechar o programa.Em resumo, o código em Pascal define funções para calcular a soma dos quadrados dos dígitos e verificar se um número é feliz. Ele solicita um número ao usuário, realiza a verificação e exibe o resultado. O conjunto numerosVistos
é usado para evitar ciclos infinitos ao verificar números não felizes.
Para ver este algoritmo em outras linguagens, veja o post n site Giovani Da Cruz:
Crie um programa e um algoritmo que leia um número e informe se ele é ou não um número feliz
Beleza pessoal? Espero que tenham gostado.
Deixe nos comentários as suas dúvidas e sugestões!
Um abraço e até o próximo post. Valeu!