Buongiorno a tutti, ho un esercizio che mi chiede la seguente:
"Si scriva un programma in C che dato un vettore di numeri interi arbitrari (dimensione definita
dall’utente nel main) calcolare il valore mediano.
Per il calcolo del valore mediano è necessario fare un ordinamento del vettore e poi
prendere il valore centrale. Sia per l’ordinamento che per il calcolo del mediano è necessario
usare le funzioni."
Ho fatto il seguente codice:
#include <stdio.h>
void ordina_crescente(int* vett, int n);
int mediana(int* vett, int N);
int main() {
    int i, N;
    printf("Quanti numeri vuoi inserire: ");
    scanf("%d", &N);
    int vett[N];
    
    for(i=0; i<N; i++) {
        printf("Inserire %d° numero: ", i+1);
    scanf("%d", &vett[i]);
    
    }
    printf("La mediana e': %d\n", mediana(vett, N));
    return 0;
}
    
void ordina_crescente(int*vett, int n){
int c, d, swap;
for(c=0; c<n-1; c++) {
    for(d=0; d<n-c-1; d++) {
        if(vett[d] > vett[d+1]) {
            swap = vett[d];
            vett[d] = vett[d+1];
            vett[d+1] = swap;
        }
    }
}
}
int mediana(int* vett, int N) {
    ordina_crescente(vett, N);
    int mediana;
    if(N%2==1) {
        mediana = (N+1)/2;
        return vett[mediana-1];
    }
    else if(N%2==0) {
        mediana = ((N/2) + ((N/2)+1))/2;
        return vett[mediana];
    }
    return 0;
}
Il problema nasce quando voglio calcolare la mediana di un vettore costituito da un numero pari di elementi,  mentre se è costituito da un numero dispari di elementi nessun problema. Potreste aiutarmi ? Grazie