Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alessandra Nastassja

Número perfeito

Recommended Posts

Eu estou aprendendo C, e não estou conseguindo fazer este exercício. Não sei o que estou fazendo de errado. Desde já agradeço 
 

#include <stdio.h>

int numeroPerfeito(int num[3]){
   int divisor, soma = 0, i;
   for(i = 0; i < 3; i++){
     for(divisor = 1; divisor <= num/2; divisor++)
       if(num % divisor == 0)
         soma = soma + divisor;
     if(soma == num)
       return 1;
     else
      return 0;
   }
}

int main(){
   int num[3], i;

   for(i = 0; i < 3; i++){
      printf("Digite um numero: ");
      scanf("%d", &num); 

      if(numeroPerfeito (num, 3) == 1)
         printf("\n Numero perifeito");
      else
         printf("\n Nao eh um numero perfeito");
   }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alessandra Nastassja, temos alguns problemas...

 

1) No scanf a atribuição está incorreta. Como tu declara um vetor de inteiros de 3 posições, na hora de atribuir tu deve indicar em qual posição vai guardar o número. Como tu está dentro de um for, ficaria assim:

scanf("%d", &num[i]); 

 

2) Tu usa um for para preencher o vetor, no entanto, chama a função no meio do laço e tenta passar o vetor que ainda não está totalmente preenchido.

 

3) No momento da chamada da função numeroPerfeito tu passa dois parâmetros, enquanto na declaração da função ela recebe apenas um.

 

Sugiro dar uma revisada nessa lógica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.