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:
- Definimos un tamaño máximo de array de 100 elementos.
- La función
swap()ayuda a intercambiar dos elementos del array. sortArray()utiliza el ordenamiento por burbuja para organizar los elementos en orden ascendente.- 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:
- Se agregó la función
calculateRange()para calcular el rango. - El rango se calcula restando el primer (mínimo) elemento del último (máximo) elemento en el array ordenado.
- 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:
- Se agregó la función
printRangeAnalysis()para proporcionar una salida completa. - Se incluyó contexto adicional sobre el rango y la variabilidad de los datos.
- 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.



