Ciao a tutti,
vi propongo il mio esercizio. Devo calcolare la mediana dei miei campioni di 3/4 numeri. Fin quando non faccio l'ordinamento me li calcola in maniera corretta, quando chiamo il MergeSort non mi scrive l'ouput...
Di seguito il codice
codice:
for( i = 0; i < n; i++ ) campione[i] = 1;
mediana = (double *)malloc(sizeof(double)*n_spazicampi);
for(j=0; j<n_spazicampi; j++)
{ media1=0.0;
fprintf(fp, "%4d: { ", j + 1 ); /* il campione è racchiuso tra parentesi */
for( i = 0; i < n - 1; i++ )
{
fprintf(fp, "%f, ", popol[campione[i]-1]);
med[i]=popol[campione[i]-1];
}
med[i]=popol[campione[i]-1];
for(k=0;k<n;k++) media1= media1 + med[k];
media1=media1/n;
//stimamed[j]=media1;
/* cumula i valori della media */
fprintf(fp, "%f }\t", popol[campione[i]-1]);
fprintf(fp, "media = %f\t",media1);
/***********************************************************************************************/
mediana[j]=medianaCampionaria(med,n);
fprintf(fp, "mediana = %f\n",mediana[j]);
}
+
codice:
double medianaCampionaria(double *v,int numElem)
{
double mediana;
MergeSort(v,numElem-1);
if (numElem%2==1) mediana=v[((numElem+1)/2)-1];
else
{
int m1=numElem/2;
int m2=m1+1;
mediana=(v[m1-1]+v[m2-1])/2;
}
return mediana;
}