miiiiiiiiiiia Postado Julho 5, 2011 Denunciar Share Postado Julho 5, 2011 Este programa informa ao usuário se o número é perfeito ou não ; O que está acontecendo é que quando eu digito 6 como valor ele está declarando perfeito . O que é real .Já ao digitar 28 , ele diz que o número não é perfeito . porém, 28 é perfeito . Alguém consegue analisar ?número perfeito é quando a soma de seus divisores é igual a ele mesmo #include <iostream> using namespace std; bool perfeito(int v) { int cont, acum=0; for (cont=1;cont<=v/2;cont++) { acum=acum+cont; }if (acum==v) { return true; }else { return false; } } int main(){ int v; cout<<"Informe um valor"; cin>>v; if (perfeito(v)==true){ cout<<"\nPerfeito"; }else if (perfeito(v)==false){ cout<<"não perfeito"; return 0; } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 pedromss Postado Julho 6, 2011 Denunciar Share Postado Julho 6, 2011 Não faz sentido o que você está fazendo dentro do for com cont. Você está somando todos os números de 1 até v/2, mas você só pode somar se o número for um divisor de v. O for tem de ir até o número menos 1 e primeiro verifica se é um dividor pra depois somar. Dá uma olhada:#include <iostream> using namespace std; bool perfeito(int v) { int cont, acum=0; for (cont = 1; cont < v; cont++) { if ((v % cont) == 0) { acum += cont; } } if (acum==v) { return true; } else { return false; } } int main() { int v; cout << "Informe um valor: "; cin >> v; if (perfeito(v)==true) { cout << "\nPerfeito\n"; } else if (perfeito(v)==false) { cout << "\nNao perfeito\n"; return 0; } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
miiiiiiiiiiia
Este programa informa ao usuário se o número é perfeito ou não ;
O que está acontecendo é que quando eu digito 6 como valor ele está declarando perfeito . O que é real .
Já ao digitar 28 , ele diz que o número não é perfeito . porém, 28 é perfeito .
Alguém consegue analisar ?
número perfeito é quando a soma de seus divisores é igual a ele mesmo
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.