Determinar la Moda de un Conjunto de Datos en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a determinar la moda de un conjunto de datos en C. El laboratorio cubre los siguientes pasos:

Leer el Arreglo de Números: Aprenderás cómo leer un arreglo de números en C, que es el primer paso crucial para determinar la moda de un conjunto de datos. El programa permite la entrada de un conjunto de números y los prepara para el análisis de frecuencias.

Contar Frecuencias para Encontrar el Valor Más Común: Modificarás el programa anterior para contar las frecuencias de cada número en el arreglo e identificar el valor más común (moda).

Imprimir la Moda: Finalmente, imprimirás la moda, que es el valor que aparece con mayor frecuencia en el conjunto de datos.

Leer el Arreglo de Números

En este paso, aprenderás a leer un arreglo de números en C, que es el primer paso crucial para determinar la moda de un conjunto de datos. Crearemos un programa en C que permita la entrada de un conjunto de números y los prepare para el análisis de frecuencias.

Primero, creemos un nuevo archivo C para nuestro programa de cálculo de la moda:

cd ~/project
nano mode_calculation.c

Ahora, agrega el siguiente código al archivo:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int n, i;

    // Ingresa el número de elementos
    printf("Ingrese el número de elementos (máximo %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Ingresa los elementos del arreglo
    printf("Ingrese %d enteros:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Imprime el arreglo ingresado para verificar la entrada
    printf("Arreglo ingresado: ");
    for (i = 0; i < n; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    return 0;
}

Compila y ejecuta el programa:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Salida de ejemplo:

Ingrese el número de elementos (máximo 100): 5
Ingrese 5 enteros:
3 4 2 4 1
Arreglo ingresado: 3 4 2 4 1

Desglosemos las partes clave de este código:

  1. #define MAX_SIZE 100 establece un límite máximo para el arreglo para evitar desbordamientos.
  2. scanf() se utiliza para ingresar el número de elementos y los valores del arreglo.
  3. Imprimimos el arreglo para verificar que la entrada se capturó correctamente.

El código demuestra la entrada básica de arreglos en C, esencial para nuestro proceso de cálculo de la moda. En los siguientes pasos, construiremos sobre esto para contar frecuencias y determinar la moda.

Contar Frecuencias para Encontrar el Valor Más Común

En este paso, modificaremos nuestro programa anterior para contar las frecuencias de cada número en el arreglo e identificar el valor más común (moda).

Abre el archivo existente y actualiza el código:

cd ~/project
nano mode_calculation.c

Reemplaza el código anterior con la siguiente implementación:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int frequencies[MAX_SIZE] = {0};
    int n, i, j, mode = 0, max_frequency = 0;

    // Ingresa el número de elementos
    printf("Ingrese el número de elementos (máximo %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Ingresa los elementos del arreglo
    printf("Ingrese %d enteros:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Cuenta las frecuencias de cada número
    for (i = 0; i < n; i++) {
        int count = 1;
        for (j = 0; j < n; j++) {
            if (i != j && numbers[i] == numbers[j]) {
                count++;
            }
        }
        frequencies[i] = count;

        // Realiza un seguimiento de la moda
        if (count > max_frequency) {
            max_frequency = count;
            mode = numbers[i];
        }
    }

    // Imprime las frecuencias
    printf("\nFrecuencias:\n");
    for (i = 0; i < n; i++) {
        printf("El número %d aparece %d vez(es)\n", numbers[i], frequencies[i]);
    }

    // Imprime la moda
    printf("\nModa: %d (aparece %d veces)\n", mode, max_frequency);

    return 0;
}

Compila y ejecuta el programa:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Salida de ejemplo:

Ingrese el número de elementos (máximo 100): 6
Ingrese 6 enteros:
2 3 4 2 2 5

Frecuencias:
2 aparece 3 vez(es)
3 aparece 1 vez(es)
4 aparece 1 vez(es)
2 aparece 3 vez(es)
2 aparece 3 vez(es)
5 aparece 1 vez(es)

Moda: 2 (aparece 3 veces)

Puntos clave de esta implementación:

  1. Creamos un arreglo frequencies para almacenar el conteo de cada número.
  2. Los bucles anidados cuentan las ocurrencias de cada número único.
  3. Realizamos un seguimiento de la moda guardando la frecuencia máxima.
  4. El programa maneja casos con una sola moda.

Imprimir la Moda

En este paso final, mejoraremos nuestro programa de cálculo de la moda para manejar múltiples modas y proporcionar una salida más completa de información estadística.

Abre el archivo existente y actualiza el código:

cd ~/project
nano mode_calculation.c

Reemplaza el código anterior con la siguiente implementación:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int frequencies[MAX_SIZE] = {0};
    int unique_numbers[MAX_SIZE];
    int n, i, j, unique_count = 0, max_frequency = 0;

    // Ingresa el número de elementos
    printf("Ingrese el número de elementos (máximo %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Ingresa los elementos del arreglo
    printf("Ingrese %d enteros:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Encuentra números únicos y sus frecuencias
    for (i = 0; i < n; i++) {
        int is_unique = 1;
        for (j = 0; j < unique_count; j++) {
            if (numbers[i] == unique_numbers[j]) {
                is_unique = 0;
                break;
            }
        }

        if (is_unique) {
            unique_numbers[unique_count] = numbers[i];

            // Cuenta la frecuencia de este número único
            int count = 0;
            for (j = 0; j < n; j++) {
                if (numbers[i] == numbers[j]) {
                    count++;
                }
            }
            frequencies[unique_count] = count;

            // Actualiza la frecuencia máxima
            if (count > max_frequency) {
                max_frequency = count;
            }

            unique_count++;
        }
    }

    // Imprime información detallada de la moda
    printf("\nAnálisis Estadístico:\n");
    printf("Números Totales: %d\n", n);
    printf("Números Únicos: %d\n", unique_count);

    printf("\nDistribución de Frecuencias:\n");
    for (i = 0; i < unique_count; i++) {
        printf("Número %d: %d vez(es)\n",
               unique_numbers[i], frequencies[i]);
    }

    // Imprime las modas
    printf("\nModa(s):\n");
    for (i = 0; i < unique_count; i++) {
        if (frequencies[i] == max_frequency) {
            printf("- %d (aparece %d veces)\n",
                   unique_numbers[i], frequencies[i]);
        }
    }

    return 0;
}

Compila y ejecuta el programa:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Salida de ejemplo:

Ingrese el número de elementos (máximo 100): 7
Ingrese 7 enteros:
2 3 4 2 2 5 5

Análisis Estadístico:
Números Totales: 7
Números Únicos: 4

Distribución de Frecuencias:
Número 2: 3 vez(es)
Número 3: 1 vez(es)
Número 4: 1 vez(es)
Número 5: 2 vez(es)

Moda(s):
- 2 (aparece 3 veces)

Mejoras clave en esta versión:

  1. Maneja múltiples modas si existen.
  2. Proporciona una descripción estadística completa.
  3. Identifica números únicos en el conjunto de datos.
  4. Muestra la distribución de frecuencias.

Resumen

En este laboratorio, aprenderás cómo leer un arreglo de números en C y contar las frecuencias de cada número para determinar la moda, que es el valor más común en el conjunto de datos. Primero, crearás un programa en C que permita la entrada de un conjunto de números y los prepare para el análisis de frecuencias. Luego, modificarás el programa para contar las frecuencias de cada número e identificar la moda. Finalmente, imprimirás la moda en la consola.

Los puntos clave de aprendizaje de los pasos completados son:

  1. Cómo leer un arreglo de números en C utilizando la función scanf().
  2. Cómo imprimir el arreglo ingresado para verificar la entrada.
  3. Cómo contar las frecuencias de cada número en el arreglo para encontrar el valor más común (moda).