1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[C] programa HELP ME

Discussão em 'Programação' iniciada por mrjm, 21 de Outubro de 2008. (Respostas: 5; Visualizações: 604)

  1. mrjm

    mrjm Power Member

    pessoal, eu costumo programar em c, mas agora está-me mesmo a dar uma daquelas brancas em que não consigo achar uma solução...

    Enunciado:
    Escreva um programa que leia um inteiro n e escreva a soma dos seus divisores
    próprios. Um divisor é próprio se for diferente do número e da unidade. Por exemplo
    a soma dos divisores próprios de 12 é 2 + 3 + 4 + 6 = 15.


    Minha resolução:
    Código:
    #include <stdio.h>
    int calcula_divisores (int x);
    int main (void){
     int numero, resultado;
     printf("Introduza um numero: ");
     scanf("%d", &numero);
     resultado = calcula_divisores(numero);
     printf("O resultado da soma dos diisores proprios eh: %d\n", resultado);
      
     return 0;
    }
    int calcula_divisores (int x){
    int i, j;
    j=1;
    for (i== 2; i<x; i++){
     if (x/i == 0)
     j = j + (x/i);
     else
     j = j;
    }
    return j;
    }
     
    é o seguinte, este código está mal, como é óbvio pois senão não estaria a incomodarvos, mas a questão é: ONDE?

    Agradeço desde já a quem me possa ajudar...

    CUMPS [[]]
     
    Última edição pelo moderador: 21 de Outubro de 2008
  2. m00s

    m00s Power Member

    porque estás a verificar quando x dividido por i é igual a zero... em vez de quando x dividido por i der resto = 0!


    percebes?


    a parte que estou a referir seria:

    Código:
    if (x%i == 0)
     
    Última edição: 21 de Outubro de 2008
  3. mrjm

    mrjm Power Member


    yup ja substitui e continua a nao funcionar (alterei o / por %, para dar o resto...) mas continua a nao funcionar de forma correcta... help me...
     
  4. m00s

    m00s Power Member

    tens
    Código:
    for (i== 2; i<x; i++){
    
    em vez de
    Código:
    for (i=2; i<x; i++){
    
     
  5. m00s

    m00s Power Member

    e nao faço ideia porque tens um "j" e muito menos este ser "1"...

    supostamente só somas os divisores próprios, e a unidade está excluída!
     
  6. mrjm

    mrjm Power Member


    o j e necessário para asegurar e retornar o valor já emendei e inicializei j = 0; depois fiz a alteração do == para = e ficou a bombar, thanks =)
     

Partilhar esta Página