DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Crie um programa e um algoritmo que leia um número e informe se ele é ou não um número feliz

Número Feliz

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:

O que é um número feliz na matemática?

 

 

Agora vamos as códigos!!!

 

Exemplo de resposta em Pascal /Delphi / Lazarus

 

(*
 
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.

Explicação

  1. Programa Principal (NumeroFeliz)
    • O programa começa com a declaração program NumeroFeliz;.
    • Isso define o nome do programa como “NumeroFeliz”.
  2. Função CalcularSomaDosQuadrados
    • A função CalcularSomaDosQuadrados é definida para calcular a soma dos quadrados dos dígitos de um número inteiro.
    • Ela recebe um número inteiro n como parâmetro.
    • Dentro da função, uma variável soma é inicializada como 0 para acumular a soma.
    • Em seguida, um loop while é usado para percorrer os dígitos do número n.
    • A cada iteração, o último dígito de n é obtido usando a operação n mod 10, e o quadrado desse dígito é adicionado à variável soma.
    • O dígito é removido de n usando n div 10.
    • O loop continua até que todos os dígitos tenham sido processados, e a função retorna o valor de soma.
  3. Função EhNumeroFeliz
    • A função EhNumeroFeliz verifica se um número é feliz ou não.
    • Ela recebe um número inteiro n como parâmetro.
    • Uma variável numerosVistos é inicializada como um conjunto vazio (um conjunto é usado para armazenar números únicos que já foram vistos).
    • Dentro de um loop 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.
    • Dentro do loop, n é adicionado ao conjunto numerosVistos para rastrear que este número já foi processado.
    • O número n é então atualizado chamando a função CalcularSomaDosQuadrados(n), que retorna a soma dos quadrados dos dígitos de n.
    • O loop continua até que 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.
    • A função retorna True se n for igual a 1, o que significa que o número é feliz, e False caso contrário.
  4. Variáveis e Saída de Dados
    • Dentro do programa principal, uma variável numero é declarada para armazenar o número que o usuário deseja verificar.
    • O programa solicita que o usuário digite um número usando Write('Digite um número: ') e lê o valor digitado na variável numero.
    • Em seguida, ele chama a função EhNumeroFeliz(numero) para verificar se o número é feliz ou não.
    • Com base no resultado, o programa exibe a mensagem apropriada usando Write.
  5. Fim do Programa
    • O programa aguarda a tecla “Enter” ser pressionada antes de ser encerrado usando 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!

Facebook Comments Box
  • Giovani Da Cruz
  • 296 views
  • 0 comentários
  • 19 de agosto de 2023

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

Deixe um comentário


Posts Relacionados - Continue Aprendendo

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados