Ir ao conteúdo

Ajuda com DEV C++ ou UAL.


Caiser Soze

Posts recomendados

Postado

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!

Postado

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

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!