repl.it
@parzibyte/

Media mediana C

C

No description

fork
loading
Files
  • main.c
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
 * Obtener media y mediana de arreglo en C
 * Media: promedio
 * Mediana: el elemento que se encuentra en el centro de una serie ordenada
 *
 * @author parzibyte
 * @see https://parzibyte.me/blog
 * */
#include <stdio.h>
#include <stdlib.h>


int funcionQueCompara(const void *a, const void *b) {
    // Castear a enteros
    int aInt = *(int *) a;
    int bInt = *(int *) b;
    // Al restarlos, se debe obtener un número mayor, menor o igual a 0
    // Con esto ordenamos de manera ascendente
    return bInt - aInt;
}


int main(void) {
    int arreglo[] = {28, 11, 96, 21, 97, 6, 18, 13, 1, 19, 51};
    int tamanioElemento = sizeof arreglo[0];
    int longitud = sizeof arreglo / tamanioElemento;

    // Obtener media
    int sumatoria = 0;
    for (int x = 0; x < longitud; x++) {
        sumatoria += arreglo[x];
    }
    float media = (float) sumatoria / (float) longitud;
    // Ahora sumatoria
    // Primero ordenamos el arreglo
    qsort(arreglo, longitud, tamanioElemento, funcionQueCompara);

    int mitad = longitud / 2;
    int mediana;
    // Después vemos si la longitud es par
    if (longitud % 2 == 0) {
        // Debemos promediar los valores del centro
        mediana = (arreglo[mitad - 1] + arreglo[mitad]) / 2;
    } else {
        mediana = arreglo[mitad];
    }
    printf("Imprimendo arreglo:\n");
    for (int x = 0; x < longitud; x++) {
        printf("%d ", arreglo[x]);
    }
    printf("\nMediana: %d", mediana);
    printf("\nMedia: %f", media);
    return 0;
}
Fetching token
?