Ci sei quasi..
Allora nel main la chiamata a msort, lhai modificata quasi bene..
Almeno che non vuoi lavorare con le dimensioni dell'array, sarebbe opportuno modificare la chiamata con
Poi nella funzione msort(dopo la modifica della chiamata nel main dovevi riadattare il tutto) non c'e bisogno di fare il controllo
perchè adesso questo controlla risulta errato(per la modifica della chiamata msort nel main). Basta che modifichi questa funzione con
codice:
void msort(int a[], int i, int j){
int med;
if(i<j){
med=(i+j)/2;
msort(a,i,med);
msort(a,med+1,j);
merge(a,i,med,j);
}
}
(L'azione svolta nell' if eliminato si farà direttamente nella funzione merge)
Poi solo 2 precisazioni nella funzione merge: il k deve essere settato a zero(l'array c parte da zero); poi quando nelle ultime righe copi il vettore ordinato in a devi modificare il codice in :
codice:
for(k=inf;k<=sup;k++)
a[k]=c[k-inf];
perchè copi in a (sup-inf) elementi di c (da 0 a sup-inf) però questi elementi sono quelli che in a occupano i posti da inf a sup
CIAO spero sono stato chiaro