Il compilatore non dà errore, ma la funzione selection sort non gira se l'array ha più di 6 elementi e non capisco come fare per rendere la mediana double o float per renderla più precisa.
grazie a chi risponderà
/*Programma che acquisisce un numero
minore di 10 e le componenti di un
vettore e le riordina in senso
decrescente e ne calcola la mediana*/
#include <stdio.h>
#include <math.h>
int lettura_dimensione (int []);
int controllo_dimensione (int);
void selection_sort (int [], int);
int mediana (int [], int);
int main ()
{int n, a[n];
n=lettura_dimensione (a);
if (controllo_dimensione (n)==0) return 0;
selection_sort (a, n);
int med=mediana (a, n);
printf ("\nMediana=%d", a[med]);
return 0;}
int lettura_dimensione (int v[])
{int a; printf ("Inserire un intero minore di 11="); scanf("%d", &a);
if (controllo_dimensione (a)==0) {printf ("Numero maggiore di 11"); return 0;}
for (int i=0; i<a; i++) {printf ("Inserire componente %d=", i+1); scanf ("%d", &v);} return a;}
int controllo_dimensione (int a)
{if (a>10) return 0;}
void selection_sort(int a[], int n)
{int i, j, min, temp;
for(i=0;i<n-1;i++) {min=i;
for(j=i+1;j<n;j++) {if(a[min]<a[j])
{min=j;}
}
temp=a[min];
a[min]=a;
a=temp;}
printf("\nIl vettore ordinato=");
for(int i=0;i<n;i++) {printf("%d ",a);}
}
int mediana (int a[], int x)
{double m;
if (x%2==1){m=(x+1)/2; return (m-1);}
else {if (x%2==0) {m=x/2; return ((m-1)+((m)/2));
}
}
}