La dimensione che devi imporre non definisce il numero di elementi che saranno contenuti nell'array, è soltanto un limite superiore. Nel tuo caso puoi definire un array con 10 milioni di elementi e usare solo i primi n, ma è più sensato definire una array di solo 10 elementi visto che n <= 10 (sprechi meno spazio). È un procedimento standard che fanno tutti. L'alternativa accettabile consiste nell'usare malloc/free per creare un array dinamico, ma non so se li hai già studiati. I VLA non li usa quasi nessuno.
Non hai corretto controllo_dimensione. Dovevi aggiungere un else, in questo modo:
C:
int controllo_dimensione(int a) {
if (a > 10)
return 0;
else
return 1;
}
E ribadisco di usare una costante (un numero, non una variabile) al posto di n perché usare una variabile non inizializzata è proprio sbagliato... anche se vuoi un VLA.
Questo è il programma che gira sul mio computer. Ho sistemato controllo_dimensione e ho sistemato e ho esplicitamente scritto
int a[10];
nel main.
Codice:
Inserire un intero minore di 11=10
Inserire componente 1=1
Inserire componente 2=7
Inserire componente 3=3
Inserire componente 4=9
Inserire componente 5=4
Inserire componente 6=5
Inserire componente 7=10
Inserire componente 8=2
Inserire componente 9=6
Inserire componente 10=8
Il vettore ordinato=10 9 8 7 6 5 4 3 2 1
Mediana=5.000000
Questo è quello che succede quando inserisco 8 al posto di 10 (a runtime, perché nel codice rimane scritto 10). Riporto l'output giusto per farti capire che per l'utente l'array appare come se fosse grande 8, anche se in realtà è grande 10.
Codice:
Inserire un intero minore di 11=8
Inserire componente 1=6
Inserire componente 2=3
Inserire componente 3=5
Inserire componente 4=1
Inserire componente 5=9
Inserire componente 6=23
Inserire componente 7=591
Inserire componente 8=2349
Il vettore ordinato=2349 591 23 9 6 5 3 1
Mediana=7.000000
Se da te non funziona, posta anche input e output, ma fidati... il main fallo così:
C:
int main() {
int n;
int a[10]; // oppure a[100000] basta che sia un numero e non una variabile
// ...
}