Un errore è quello perchè(con quelle due righe di codice copi nel vettore a il vettore c già ordinato) se guardi bene prima setti k cone subito dopo controlli la condizionecodice:k=inf.E' normale che non ti eseguirà mai il ciclo perchè la condizione sarà sempre verificata. A te invece interessa il vettore ordinato dalla posizione inf alla posizione sup(vedi gli argomenti della funzione merge).codice:k<=inf
Quindi il ciclo for sarebbe corretto scriverlo cosi:
poi ricordati che gli array in C partono da 0 : la chiamata nel maincodice:for(k=inf;k<sup;k++) a[k]=c[k];deve essere sostituitacodice:msort(a,1,n);