Encontrar el Rango de un Conjunto de Datos en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a encontrar el rango de un conjunto de datos en programación C. El laboratorio cubre los siguientes pasos: 1) Leer y ordenar el array, 2) Calcular el rango encontrando la diferencia entre los valores máximo y mínimo, y 3) Imprimir el rango. El laboratorio proporciona una guía paso a paso con código de ejemplo para ayudarte a comprender el proceso de analizar las propiedades estadísticas de un conjunto de datos utilizando C.

Leer y Ordenar el Array

En este paso, aprenderás a leer un array de números y ordenarlo para prepararlo para el cálculo del rango. Usaremos un enfoque simple para la entrada y organización de los datos.

Primero, creemos un programa C para leer y ordenar un array:

#include <stdio.h>

#define MAX_SIZE 100

// Función para intercambiar dos elementos
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Función de ordenamiento por burbuja para ordenar el array
void sortArray(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }
}

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

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

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

    // Ordenar el array
    sortArray(numbers, n);

    // Imprimir el array ordenado
    printf("Array ordenado: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    return 0;
}

Descompongamos los componentes clave:

  1. Definimos un tamaño máximo de array de 100 elementos.
  2. La función swap() ayuda a intercambiar dos elementos del array.
  3. sortArray() utiliza el ordenamiento por burbuja para organizar los elementos en orden ascendente.
  4. En main(), hacemos lo siguiente:
    • Leemos el número de elementos.
    • Ingresamos los elementos del array.
    • Ordenamos el array.
    • Imprimimos el array ordenado.

Ejemplo de compilación y ejecución:

gcc -o array_sort array_sort.c
./array_sort

Ejemplo de salida:

Ingrese el número de elementos (máximo 100): 5
Ingrese 5 enteros:
42 15 7 23 11
Array ordenado: 7 11 15 23 42

Rango = Máximo - Mínimo

En este paso, aprenderás a calcular el rango de un conjunto de datos encontrando la diferencia entre los valores máximo y mínimo en el array ordenado.

Modifiquemos el programa anterior para calcular el rango:

#include <stdio.h>

#define MAX_SIZE 100

// Función para intercambiar dos elementos
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Función de ordenamiento por burbuja para ordenar el array
void sortArray(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }
}

// Función para calcular el rango
int calculateRange(int arr[], int size) {
    // Si el array está vacío, devuelve 0
    if (size == 0) return 0;

    // El rango es la diferencia entre el último (máximo) y el primer (mínimo) elemento
    return arr[size - 1] - arr[0];
}

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

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

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

    // Ordenar el array
    sortArray(numbers, n);

    // Calcular e imprimir el rango
    int range = calculateRange(numbers, n);

    printf("Valor mínimo: %d\n", numbers[0]);
    printf("Valor máximo: %d\n", numbers[n - 1]);
    printf("Rango: %d\n", range);

    return 0;
}

Modificaciones clave en este paso:

  1. Se agregó la función calculateRange() para calcular el rango.
  2. El rango se calcula restando el primer (mínimo) elemento del último (máximo) elemento en el array ordenado.
  3. Se agregaron instrucciones de impresión para mostrar los valores mínimo, máximo y del rango.

Ejemplo de compilación y ejecución:

gcc -o range_calculator range_calculator.c
./range_calculator

Ejemplo de salida:

Ingrese el número de elementos (máximo 100): 5
Ingrese 5 enteros:
42 15 7 23 11
Valor mínimo: 7
Valor máximo: 42
Rango: 35

El rango representa la dispersión del conjunto de datos, calculado restando el valor más pequeño del valor más grande en el array ordenado.

Imprimir el Rango

En este paso final, aprenderás a formatear y mostrar los resultados del cálculo del rango de una manera amigable para el usuario, añadiendo contexto estadístico a la salida.

Creemos una versión mejorada de nuestro programa de cálculo de rango:

#include <stdio.h>

#define MAX_SIZE 100

// Función para intercambiar dos elementos
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Función de ordenamiento por burbuja para ordenar el array
void sortArray(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }
}

// Función para calcular el rango
int calculateRange(int arr[], int size) {
    // Si el array está vacío, devuelve 0
    if (size == 0) return 0;

    // El rango es la diferencia entre el último (máximo) y el primer (mínimo) elemento
    return arr[size - 1] - arr[0];
}

// Función para imprimir información detallada del rango
void printRangeAnalysis(int arr[], int size, int range) {
    printf("\n--- Análisis Estadístico del Rango ---\n");
    printf("Tamaño del Conjunto de Datos: %d\n", size);
    printf("Valor Mínimo: %d\n", arr[0]);
    printf("Valor Máximo: %d\n", arr[size - 1]);
    printf("Rango: %d\n", range);

    // Información adicional
    printf("\nInterpretación:\n");
    printf("El rango representa la dispersión de los valores en el conjunto de datos.\n");
    printf("Un rango mayor indica una mayor variabilidad en los datos.\n");
}

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

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

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

    // Ordenar el array
    sortArray(numbers, n);

    // Calcular el rango
    int range = calculateRange(numbers, n);

    // Imprimir el análisis detallado del rango
    printRangeAnalysis(numbers, n, range);

    return 0;
}

Mejoras clave en este paso:

  1. Se agregó la función printRangeAnalysis() para proporcionar una salida completa.
  2. Se incluyó contexto adicional sobre el rango y la variabilidad de los datos.
  3. Se formateó la salida para que sea más informativa y legible.

Ejemplo de compilación y ejecución:

gcc -o range_analysis range_analysis.c
./range_analysis

Ejemplo de salida:

Ingrese el número de elementos (máximo 100): 6
Ingrese 6 enteros:
10 25 7 42 15 33

--- Análisis Estadístico del Rango ---
Tamaño del Conjunto de Datos: 6
Valor Mínimo: 7
Valor Máximo: 42
Rango: 35

Interpretación:
El rango representa la dispersión de los valores en el conjunto de datos.
Un rango mayor indica una mayor variabilidad en los datos.

El programa ahora proporciona una vista más completa del rango del conjunto de datos, ayudando a los usuarios a comprender la significancia estadística del cálculo.

Resumen

En este laboratorio, primero aprendiste a leer y ordenar un array de números utilizando un algoritmo de ordenamiento por burbuja simple. Este paso preparó el conjunto de datos para calcular el rango. A continuación, aprenderás a encontrar el rango del conjunto de datos restando el valor mínimo del valor máximo en el array ordenado. Finalmente, imprimirás el rango calculado. Los puntos clave de aprendizaje de los pasos completados son la lectura y ordenación de un array, así como el concepto de rango de un conjunto de datos.