Ir ao conteúdo
  • Cadastre-se

Código de número perfeito (Vetor) C++


DOPL
Ir à solução Resolvido por horctos,

Posts recomendados

Galera to criando um algorítimo (pelo menos tentando) que tem que ler 100 números (no caso coloquei 10 pra deixar mais rápido no teste), e armazena-los, depois disso tem que imprimir apenas os números perfeitos (ou seja, aqueles que a soma de seus divisores resultam nele mesmo), porém como não sei muito de vetores não deu muito certo... quem puder me ajudar eu agradeço muito, o código tá assim:

 



 

#include <cstdio>

#include <cstdlib>
int main ()
{
int v[10]; // 0-9
int i,j,num,soma=0;
for ( i=1; i<=10; i++)
{
printf("Digite um numero:") ;
scanf ("%d",&num);
soma = 0;
}
for (j=1; j < v; j++)
if ((num%j)==0)
{
soma = soma + j;
}
if ( num == soma)
v = num;
{
printf ("O numero %d e perfeito \n", v);
}
}

 

Link para o comentário
Compartilhar em outros sites

  • Solução

Seu código está meio confuso, mas eu entendi o que você queria fazer, então ficaria assim:

#include <stdio.h>#include <stdlib.h>int main (){    int v[10]; // 0-9    int i, cont = 0, num[10];    printf("Digite 10 numeros:\n") ;    for ( i = 0; i < 10; i++){        scanf ("%d", &v[i]);    }    for(i = 0; i < 10; i++){          if(numperfeito(v[i]) == 0){                num[cont] = v[i];                cont++;          }    }    for(i = 0; i < cont; i++){        printf("%d e perfeito\n", num[i]);    }    system("pause");}//Usando como se fosse um booleanint numperfeito( int v){    int i, aux, b;    for (i = 0; i < 10; ++i)    {        aux = 0;        for (b = 1; b < v; b++)        {            if (v % b == 0)            {                //soma os numeros divisiveis                aux = aux + b;            }        }         //se soma dos divisiveis == numero digitado            if (aux == v)            {                return 0;            }else{                return 1;            }    }}
Link para o comentário
Compartilhar em outros sites

 

 

Segue o erro de compilação

Você deve criar a função que eu criei:

int numperfeito( int v){    int i, aux, b;     for (i = 0; i < 10; ++i)    {        aux = 0;        for (b = 1; b < v; b++)        {            if (v % b == 0)            {                //soma os numeros divisiveis                aux = aux + b;            }        }         //se soma dos divisiveis == numero digitado            if (aux == v)            {                return 0;            }else{                return 1;            }    }}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!