Ir ao conteúdo
  • Cadastre-se

Ajuda com DEV C++ ou UAL.


Caiser Soze

Posts recomendados

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!

Link para o comentário
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");
}

Link para o comentário
Compartilhar em outros sites

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...