Boa noite pessoal, estou aprendendo programação e preciso criar duas funções segundo este enunciado:
Escreva uma função, chamada numero_perfeito, que receba um número inteiro positivo como parâmetro e retorne um inteiro 1 caso o número for perfeito ou 0 caso contrário. Após, escreva outra função, chamada de encontra_perfeito, que recebe dois inteiros positivos representando um intervalo fechado (min e max) e um vetor de caracteres. A função colocará dentro do vetor de caracteres todos os números inteiros perfeitos dentro do intervalo recebido, separados por vírgula e sem vírgula após o último número. A função não retorna nada (void). Por exemplo, se min for 1 e max for 100, o vetor deverá conter "6,28".
Obs.: Diz-se que um número inteiro é um número perfeito se a soma de seus fatores, incluindo 1 (mas não o numero em si), resulta no próprio número. Por exemplo, 6 é um número perfeito porque 6 = 1+2 + 3.
Este foi o meu desenvolvimento:
#include <stdio.h>
#include <stdlib.h>
int numero_perfeito (int num){
int fat = 0, i;
for (i=1; i<num; i++){
if ((num%i) == 0)
fat = fat + i;}
if (fat == num){
return 1;}
else
return 0;}
void encontra_perfeito (int max, int min, char vetp[0]){
int cont=0, i, n=0;
char perf[0];
for (i=0; i<max; i++){
vetp = 0;
perf = 0;
}
for (i=1; i<max; i++){
vetp[n]= min+1;
n = n+1;
if (numero_perfeito(vetp) == 0){
perf[cont] = vetp;
cont = cont+1;
}
}
for (i=0; i<cont; i++){
printf("%c ,", perf);
}
}
int main(){
int max, min;
char vetp[0];
printf("Digite o intervalo: ");
scanf ("%i %i", &min, &max);
encontra_perfeito(max, min, vetp[0]);
return(0);
}
Porém a função encontra_perfeito retorna apenas lixo da memória e eu não consigo achar meu erro. Alguém pode me ajudar?