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;
       
}