Logo Hardware.com.br
Nastassja
Nastassja Novo Membro Registrado
1 Mensagem 0 Curtidas

Olá, alguém pode me ajudar? Exercício de sub-rotina de um vetor com três primeiros números perfeitos

#1 Por Nastassja 27/11/2017 - 09:51
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

[HASHTAG]#include[/HASHTAG]

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");
}
}
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#2 Por esquiloesper...
28/11/2017 - 09:06
Nastassja disse:
Não sei o que estou fazendo de errado...
Olá, o primeiro erro é ter postado seu código como texto, quando deveria ter utilizado as tags [ code ] para isso. wink.png

E quanto ao código:
[LIST=1]
A quantidade de parâmetros na chamada do método númeroPerfeito é excedente
O vetor não é utilizado dentro do Main, portanto ele pode ser criado no destino
A expressão (num \[ i ] / 2) atrasa a execução a cada iteração do Loop, portanto mova para fora dele
A validação da soma precisa ser feita ao final, portanto fora do Loop, do contrário há risco de retorno errático
Se a chamada e o retorno não forem obrigatórios, todo o procedimento pode ser realizado unicamente dentro do método
[/LIST]
É isso.
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal