Exercícios Resolvidos de Comando for

Ver Teoria

Enunciado

Dado um número n inteiro e positivo, dizemos que n é perfeito se n for igual à soma de seus divisores positivos diferentes de n. Construa um programa em C que verifica se um dado número é perfeito. Exemplo: 6 é perfeito, pois 1 + 2 + 3 = 6 .

Passo 1

Vamos iniciar o desenvolvimento do programa definindo o seu escopo.

Passo 2

Agora vamos para a etapa de declaração e inicialização de variáveis.

Informações sobre as variáveis:

  • n é uma variável que será responsável por armazenar o número inserido como entrada do programa;
  • i é uma variável contadora;
  • somaDivisores é uma variável que armazenará a soma de todos os divisores do número n inserido;
  • marcador é uma variável booleana representativa que informará se o número n inserido é ou não perfeito.

Passo 3

Tendo em mãos as variáveis do programa, nós podemos requisitar a entrada do programa ao usuário.

Essa entrada nada mais é que o número n.

Passo 4

Após a instrução de leitura do número n que será inserido, nós podemos definir uma estrutura de repetição for para verificar a igualdade da soma dos divisores de n.

Vamos começar definindo os parâmetros da estrutura for. A variável contadora i deve ser inicializada com o valor 1, pois ela terá o papel de contar os divisores e divisões por 0 são indeterminadas. A condição de execução desse laço de repetição deve ser i menor que n. Além disso, a regra de incremento da variável contadora i deve ser de uma unidade por loop.

Basicamente, ao definirmos esses parâmetros estamos criando uma estrutura de repetição que começará em 1 e, com somas de 1 unidade por loop, irá repetir instruções até que esse valor seja igual a n – 1.

Em relação as instruções dentro do laço de repetição, temos um condicional que verificará se a divisão de n pelo número de i sendo processado é igual a 0 (verificação de divisor). Caso seja, a variável somaDivisores deve ser incrementada com o valor de i e uma nova verificação deve ser feita: se somaDivisores é igual a n. Caso verdadeiro marcador deve ser atribuída com 1 e break deve ser utilizado para encerrar os loops, pois o número é perfeito.

Passo 5

Por fim, basta verificarmos o valor armazenado na variável marcador para sabermos se o número é ou não perfeito.

Caso seja igual a 1, devemos imprimir que o número é perfeito. Caso contrário, se marcador ainda possuir o seu valor de inicialização (0), devemos imprimir que o número não é perfeito.

Resposta

Ei, a resposta está no passo a passo :)