Dovresti riorganizzare il codice...
Ci sono altri problemi: ad esempio lo 0 finale è un elemento della tua sequenza, non ha senso che il cast nel return, sarebbe meglio passare le dimensioni esplicitamente, ...
Riorganizziamo un po' le cose:
codice:
/* Prendere in input vettore di 27 numeri e dare come risultato 1 se la * sequenza di numeri è perfetta, 0 se non lo è */
#include <stdio.h>
#include <stdlib.h>
int isPerfect (int *seq, int size) {
int isperfect = 0, i;
for(i = 0; i < size; i++)
/*...*/;
return isperfect;
}
int main()
{
int i=0,*seq=NULL,n;
printf("Inserisci 0 per terminare la sequenza\n");
while(1) {
//Acquisisco
printf("\nInserisci il %d numero: ",i+1);
scanf("%d",&n);
if(n==0)
break;
//Inserisco valore nell'array
seq=(int *)realloc(seq,(i+1)*sizeof(int));
seq[i]=n;
i++;
}
if (isPerfect(seq, i)==1)
printf("La sequenza di numeri è perfetta");
else
printf("La sequenza di numeri non è perfetta");
free(seq);
return 0;
}