noob, o que esta errado?

Sparxxx

Membro
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:
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:
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...
 
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 "=".
 
Back
Topo