Alessandra Nastassja 0 Denunciar post Postado Novembro 27, 2017 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
Ambrosi 3 Denunciar post Postado Novembro 27, 2017 @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