DaniloTec 0 Denunciar post Postado Fevereiro 23, 2007 Estou com problema para fazer um programa que verifica todos os números perfeitos entre 1 e 100.A lógica parece estar certa, porém, não escreve nada na tela.Eis o código:#include<stdio.h>#include<stdlib.h>main(){int num,cont,soma;soma=0;for (num=1;num<=100;num++){ for (cont=1;cont<num;cont++) { if (num%cont==0) soma=soma+cont; if (soma==num) printf("%d\n",num); }}system("PAUSE");}Alguém sabe me dizer onde está o erro?Grato. Compartilhar este post Link para o post Compartilhar em outros sites
Nemesys 0 Denunciar post Postado Fevereiro 23, 2007 Tenta assim: #include<stdio.h>#include<stdlib.h>void main(){int num,cont,soma;soma=0;for (num=1;num<=100;num++){for (cont=1;cont<num;cont++){if (num%cont==0)soma=soma+cont;if (soma==num)printf("%d\n",num);}}system("PAUSE");} Compartilhar este post Link para o post Compartilhar em outros sites
DaniloTec 0 Denunciar post Postado Fevereiro 23, 2007 Não funcionou.O engraçado é que se eu fizer o mesmo programa pedido para o usuário digitar um número ele funciona.#include<stdio.h>#include<stdlib.h>main(){int num,cont,soma;soma=0; printf("Digite um numero: "); scanf("%d",&num); for (cont=1;cont<num;cont++) { if (num%cont==0) soma=soma+cont; } if (soma==num) printf("%d\n",num);system("PAUSE");}Agora não sei se o orro está na lógica ou na estrutura do programa. Compartilhar este post Link para o post Compartilhar em outros sites
Nemesys 0 Denunciar post Postado Fevereiro 23, 2007 Vamos lá: #include<stdio.h>#include<stdlib.h>void main(){int num,cont,soma;soma=0; printf("Digite um numero: "); scanf("%d",&num); for (cont=1;cont<num;cont++) { if (num%cont==0) soma=soma+cont; } if (soma==num) printf("%d\n",num);system("PAUSE");getch()} Ou #include<stdio.h>#include<stdlib.h>void main(){int num,cont,soma;soma=0;for (num=1;num<=100;num++){for (cont=1;cont<num;cont++){if (num%cont==0)soma=soma+cont;if (soma==num)printf("%d\n",num);}}system("PAUSE");getch();} Aqui pra mim tá dando sem erros, mas não está funcionando. Não entendi também o que está acontecendo, acredito que seja um erro de lógica mesmo, se você tiver algo parecido aí dá uma olhada no código inteiro. posta pra mim exatamente o que você quer com esse programa, vou ver se faço algo aqui. Compartilhar este post Link para o post Compartilhar em outros sites
DaniloTec 0 Denunciar post Postado Fevereiro 23, 2007 você viu que o programa que o usuário digita o número funciona,não é?!Eu quero fazer um programa que verifica todos os números perfeitos entre 1 e 100.Só isso! rsrs Compartilhar este post Link para o post Compartilhar em outros sites
Nemesys 0 Denunciar post Postado Fevereiro 23, 2007 heheh, me recorda uma coisa: Os numeros perfeitos são aqueles que só são divisíveis por eles mesmo e por 1 certo? Compartilhar este post Link para o post Compartilhar em outros sites
DaniloTec 0 Denunciar post Postado Fevereiro 23, 2007 não não, rsrsesses que você disse são números primos.números perfeitos são números que quando somamos os seus dividendos dá ele mesmo.ex.6 é dividido por 1,2,31+2+3=628 é dividido por 1,2,4,7,141+2+4+7+14=28entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
Nemesys 0 Denunciar post Postado Fevereiro 23, 2007 uia...intendi...cara, desculpe mas não consegui encontrar nenhuma formula aqui que desse conta...:P tb não sei o que estou fazendo errado! Compartilhar este post Link para o post Compartilhar em outros sites
DaniloTec 0 Denunciar post Postado Fevereiro 23, 2007 beleza!o que vale é a intenção. rsrsse eu encontrar o erro eu posto.vamos nos falando. Compartilhar este post Link para o post Compartilhar em outros sites
Nemesys 0 Denunciar post Postado Fevereiro 23, 2007 Posta sim...daí você ja posta o codigo completo, fiquei curioso pra ver os tais numeros perfeitos!!! Compartilhar este post Link para o post Compartilhar em outros sites
Vergil 15 Denunciar post Postado Fevereiro 23, 2007 Já publicaram algo do tipo aqui: http://forum.imasters.com.br/index.php?sho...amp;hl=perfeito Compartilhar este post Link para o post Compartilhar em outros sites
Nemesys 0 Denunciar post Postado Fevereiro 23, 2007 pronto, resolveu o problema...heheheheheh putz.. só tem 2 entre 0 e 100!! Valeu Vergil Compartilhar este post Link para o post Compartilhar em outros sites
DaniloTec 0 Denunciar post Postado Fevereiro 23, 2007 Achei! Quer dizer, achei não. Perguntei pra um amigo meu da facu que é master em linguagem C. O problema era que eu não zerava a variável soma. Código antigo: #include<stdio.h> #include<stdlib.h> main() { int num,cont,soma; for (num=1;num<=100;num++) { for (cont=1;cont<num;cont++) { if (num%cont==0) soma=soma+cont; } if (soma==num) printf("%d\n",num); } system("PAUSE"); } Reparem que a variável soma nunca é zerada. Código que funciona, rsrs: #include<stdio.h> #include<stdlib.h> main() { int num,cont,soma; for (num=1;num<=100;num++) { for (soma=0,cont=1;cont<num;cont++) { if (num%cont==0) soma=soma+cont; } if (soma==num) printf("%d\n",num); } system("PAUSE"); } Agora sim o código funciona. Valew a ajuda! Té mais Compartilhar este post Link para o post Compartilhar em outros sites
Nemesys 0 Denunciar post Postado Fevereiro 23, 2007 Estamos aí pra ajudar no que der e vier! Compartilhar este post Link para o post Compartilhar em outros sites