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

noob, o que esta errado?

Discussão em 'Programação' iniciada por Sparxxx, 2 de Março de 2009. (Respostas: 5; Visualizações: 606)

  1. Código:
    /* Programa dos Numeros Perfeitos */
    
    #include <stdio.h>
    
    void LerNumero(int * a);
    int TestePerfeito(int a);
        
    int main () {
        int Perfeito, numero;
        
        LerNumero(&numero);
        Perfeito=TestePerfeito(numero);
        if (Perfeito==1)
        printf("o numero %d é perfeito", numero);
        else
            printf("o numero %d não é perfeito", numero);
    }
    
    void LerNumero ( int * a){
        printf("Escreva um numero");
        scanf("%d", a);
    }
    
    int TestePerfeito(int a){
     int i,y=1;
    for(i=2;i<=a/2;i++) {
    if (a%i==1){
        y=y+i;
    }
    }
    
    if (y==a)
        return 1;
        else 
            return 0;
    }
     
    ________________________

    Desculpem, mas eu nao consigo perceber o k esta errado(nao tem erro de compilaçao, mas nao da' o que quero, numero perfeito) Lol!

    Espero que me possam ajudar, e obrigado
    Abraço
     
    Última edição pelo moderador: 3 de Março de 2009
  2. Baderous

    Baderous Banido

    O y deve ser inicializado a 0 e não a 1.
    O i deve começar em 1 e não em 2.
    O if(a%i==1) não está bem. É if (a%i==0).
     
  3. Código:
    /* Programa dos Numeros Perfeitos */
    
    #include <stdio.h>
    
    void LerNumero(int * a);
    int TestePerfeito(int a);
        
    int main () {
        int Perfeito, numero;
        
        LerNumero(&numero);
        Perfeito=TestePerfeito(numero);
        if (Perfeito==1)
        printf("=%d, O numero %d e' perfeito\n", numero,numero);
        else
            printf("=/= %d, O numero %d nao e' perfeito", numero,numero);
    }
    
    void LerNumero ( int * a){
        printf("Escreva um numero\n");
        scanf("%d", a);
    }
    
    int TestePerfeito(int a){
     int i,y=0;
    for(i=1;i<=a/2;i++) {
    if (a%i==0){
        y=y+i;
    
        printf(" %d +",i);
    }
    
    
    }
    if (y==a)
        return 1;
        else 
            return 0;
    }
     

    Já esta kuase terminado, agora surgiu-me outra duvida.. No resultado tem de aparecer por exemplo como numero 6 que é perfeito... 1+2+3=6, akilo que eu consegui fazer mais parecido foi isto que tenho em cima, mas fica 1+2+3+=6.

    Ou seja como e' que faço para que no ultimo digito que me aparecer nao tenha de colocar um mais? Ja nao me vem mais ideias lol
    Obrgd abraço
     
    Última edição pelo moderador: 3 de Março de 2009
  4. Baderous

    Baderous Banido

    O ideal seria guardares os divisores num array, e depois mostravas.
     
  5. eu fiz isso, so' que depois tambem nao estou a ver como mostralos na mesma! Porque como é que depois eu faço o print? e' isso que me esta a faltar acho eu! porque eu nao tou a ver como fazer printf("%d +",x[100]) por exemplo, mas irei ter tambem sempre o mais no fim! LOL esta-me a faltar algo...
     
  6. nasic

    nasic Power Member

    Podes fazer um if que verifica se tens a posição n de x (x[n]) diferente de -1 (por exemplo). Caso seja menos -1 então imprimes logo o "=".
     

Partilhar esta Página