Ir ao conteúdo
  • Cadastre-se
Caiser Soze

Ajuda com DEV C++ ou UAL.

Recommended Posts

Olá rapaziada! Sou principiante em algoritmos e preciso criar o seguinte:

Construa um algoritmo que possa entrar com vários números positivos e imprima quantos números são perfeitos (Um número é perfeito se a soma de seus divisores exceto ele é igual a ele).

O melhor que consegui fazer foi este:


#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int num, x, soma=0,cont=0;
cout<<"\nDigite numero: ";
cin>>num;
while (num > 0 )

{
for (x=1;x<num;x++)
if (num%x==0)
soma +=x;
if (soma==num)
{cont++;}
cout<<"\nDigite numero: ";
cin>>num;
}

cout<<"\n"<<cont;
cout<<"\n\n";
system("pause");
}

O problema é que ele só conta um número perfeito se ele for digitado no início ou até a terceira entrada, depois disso o código não retorna como número perfeito, sem falar que ele está reconhecendo o número 1 como perfeito também, estou há semanas tentando resolver, já pesquisei mas tudo que encontro é como encontrar um número perfeito e não a exibição e/ou contagem de números perfeitos.

Tem que usar while ou do while, for, if, else se for C++, se for no UAL os correspondentes enquanto, faça enquanto, para, se, senão... porque a aula era sobre essas estruturas. Agradeço qualquer sugestão.

Aliás se alguém souber resolver em qualquer outra linguagem, aceito também, depois eu tento converter, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua logica ta correta, faltava apenas colocar os dois if dentro do for e zerar a soma a cada numero digitado. Veja as alterações:


#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int num, x, soma=0,cont=0;

cout<<"\nDigite numero: ";
cin>>num;

while (num > 0 ){
for (x=1;x<num;x++){
if (num%x==0)
soma +=x;

if (soma==num && x == (num-1)){
cout<<"\nE um numero perfeito"<<endl;
cont++;
break;//sai do for
}
}

//a cada numero digitado zerar a soma
soma = 0;

cout<<"\nDigite numero: ";
cin>>num;
}

cout<<"\n"<<cont;
cout<<"\n\n";
system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×