Ir para conteúdo
Fórum Script Brasil
  • 0

Erro de resultado


miiiiiiiiiiia

Pergunta

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;


}


}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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;
    }
}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...