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