Salve ragazzi , sto studiando come implementare nel linguaggio C un Unione di Insiemi.
Faccio un esempio ho due insiemi : A[1,2,3,6,7] B[1,2,4] quello unione risulta C[1,2,3,4,6,7]
Ora ho un problema , USO DEV C++ . Il compilatore non da errori ma quando eseguo il programma la lista degli elementi da visualizzare che chiedo col Printf mi da strani numeri!

poi anche una piccola cosa che non ho capito segnalata in rosso

vi posto il codice del programma (dalla slide del prof. e copiato in DEV C) :

int appartiene_af(float, float[], int);
void unione_f(float[], int , float[] , int , float[] , int *);

int main()
{
int n_a, n_b, n_c;
float a[]={1.0,2.0,3.5,5.0,10.0};
float b[]={1.0, 14.2 , 20.0};
float c[8];
int i;
n_a=5;
n_b=3;
unione_f(a,n_a,b,n_b,c,&n_c);
printf("numero degli elementi dell'unione = %d\n", n_c);
for (i=0;i<n_c;i++)
printf(" %f\n",c[i]);
system("PAUSE");
return 0;
}
int appartiene_aF (float chiave, float a[], int n)
{
int i=0;
while (chiave!=a[i] && i<n-1)
i=i+1;
if (chiave == a[i])
return 1;
else
return 0;
}
void unione_f(float a[], int n_a , float b[] , int n_b , float c[] , int *n_c)
{
int i, i_c;
for (i=0;i<n_a;i++);
c[i]=a[i];
i_c=n_a-1; */ <--- qui non capisco perchè assegna all'indice C , il size di quello A -1 (non dovrebbe essere uguale ad A?)
for (i=0;i<n_b;i++)
{
if (!appartiene_aF(b[i],a,n_a))
{
i_c++;
c[i_c]=b[i];
}
}
*n_c= i_c+1;
}