Нахождение Размаха Набора Данных в C

CBeginner
Практиковаться сейчас

Введение

В этом лабораторном практикуме вы узнаете, как найти размах набора данных на языке программирования C. Практикум охватывает следующие шаги: 1) Чтение и сортировка массива, 2) Вычисление размаха путём нахождения разницы между максимальным и минимальным значениями и 3) Вывод размаха. Практикум предоставляет пошаговое руководство с примерами кода, чтобы помочь вам понять процесс анализа статистических свойств набора данных с использованием языка C.

Чтение и сортировка массива

В этом шаге вы узнаете, как считать массив чисел и отсортировать его для подготовки к вычислению размаха. Мы будем использовать простой подход для ввода и организации набора данных.

Сначала давайте создадим программу на C для чтения и сортировки массива:

#include <stdio.h>

#define MAX_SIZE 100

// Функция для обмена двумя элементами
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Функция сортировки массива методом пузырька
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;

    // Ввод количества элементов
    printf("Введите количество элементов (максимум %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Ввод элементов массива
    printf("Введите %d целых чисел:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Сортировка массива
    sortArray(numbers, n);

    // Вывод отсортированного массива
    printf("Отсортированный массив: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    return 0;
}

Давайте разберем ключевые компоненты:

  1. Мы определяем максимальный размер массива в 100 элементов.
  2. Функция swap() помогает обменять два элемента массива.
  3. sortArray() использует сортировку пузырьком для упорядочивания элементов в порядке возрастания.
  4. В main():
    • Считывается количество элементов
    • Вводятся элементы массива
    • Сортируется массив
    • Выводится отсортированный массив

Пример компиляции и выполнения:

gcc -o array_sort array_sort.c
./array_sort

Пример вывода:

Введите количество элементов (максимум 100): 5
Введите 5 целых чисел:
42 15 7 23 11
Отсортированный массив: 7 11 15 23 42

Размах = Макс - Мин

В этом шаге вы узнаете, как вычислить размах набора данных, найдя разницу между максимальным и минимальным значениями в отсортированном массиве.

Давайте изменим предыдущую программу для вычисления размаха:

#include <stdio.h>

#define MAX_SIZE 100

// Функция для обмена двумя элементами
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Функция сортировки массива методом пузырька
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 calculateRange(int arr[], int size) {
    // Если массив пуст, вернуть 0
    if (size == 0) return 0;

    // Размах - это разность между последним (максимальным) и первым (минимальным) элементами
    return arr[size - 1] - arr[0];
}

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

    // Ввод количества элементов
    printf("Введите количество элементов (максимум %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Ввод элементов массива
    printf("Введите %d целых чисел:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Сортировка массива
    sortArray(numbers, n);

    // Вычисление и вывод размаха
    int range = calculateRange(numbers, n);

    printf("Минимальное значение: %d\n", numbers[0]);
    printf("Максимальное значение: %d\n", numbers[n - 1]);
    printf("Размах: %d\n", range);

    return 0;
}

Ключевые изменения в этом шаге:

  1. Добавлена функция calculateRange() для вычисления размаха.
  2. Размах вычисляется путем вычитания первого (минимального) элемента из последнего (максимального) элемента в отсортированном массиве.
  3. Добавлено вывод минимального, максимального значений и размаха.

Пример компиляции и выполнения:

gcc -o range_calculator range_calculator.c
./range_calculator

Пример вывода:

Введите количество элементов (максимум 100): 5
Введите 5 целых чисел:
42 15 7 23 11
Минимальное значение: 7
Максимальное значение: 42
Размах: 35

Размах представляет собой разброс набора данных, вычисленный путем вычитания наименьшего значения из наибольшего значения в отсортированном массиве.

Вывод Размаха

В этом заключительном шаге вы узнаете, как отформатировать и отобразить результаты вычисления размаха удобным для пользователя способом, добавив статистический контекст в вывод.

Давайте создадим улучшенную версию нашей программы вычисления размаха:

#include <stdio.h>

#define MAX_SIZE 100

// Функция для обмена двумя элементами
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Функция сортировки массива методом пузырька
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 calculateRange(int arr[], int size) {
    // Если массив пуст, вернуть 0
    if (size == 0) return 0;

    // Размах - это разность между последним (максимальным) и первым (минимальным) элементами
    return arr[size - 1] - arr[0];
}

// Функция для вывода подробной информации о размахе
void printRangeAnalysis(int arr[], int size, int range) {
    printf("\n--- Статистический анализ размаха ---\n");
    printf("Размер набора данных: %d\n", size);
    printf("Минимальное значение: %d\n", arr[0]);
    printf("Максимальное значение: %d\n", arr[size - 1]);
    printf("Размах: %d\n", range);

    // Дополнительные сведения
    printf("\nИнтерпретация:\n");
    printf("Размах представляет собой разброс значений в наборе данных.\n");
    printf("Больший размах указывает на большую изменчивость данных.\n");
}

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

    // Ввод количества элементов
    printf("Введите количество элементов (максимум %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Ввод элементов массива
    printf("Введите %d целых чисел:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Сортировка массива
    sortArray(numbers, n);

    // Вычисление размаха
    int range = calculateRange(numbers, n);

    // Вывод подробного анализа размаха
    printRangeAnalysis(numbers, n, range);

    return 0;
}

Ключевые улучшения в этом шаге:

  1. Добавлена функция printRangeAnalysis() для предоставления исчерпывающего вывода.
  2. Включен дополнительный контекст о размахе и изменчивости данных.
  3. Формат вывода стал более информативным и удобочитаемым.

Пример компиляции и выполнения:

gcc -o range_analysis range_analysis.c
./range_analysis

Пример вывода:

Введите количество элементов (максимум 100): 6
Введите 6 целых чисел:
10 25 7 42 15 33

--- Статистический анализ размаха ---
Размер набора данных: 6
Минимальное значение: 7
Максимальное значение: 42
Размах: 35

Интерпретация:
Размах представляет собой разброс значений в наборе данных.
Больший размах указывает на большую изменчивость данных.

Программа теперь предоставляет более полное представление о размахе набора данных, помогая пользователям понять статистическое значение вычисления.

Резюме

В этом лабораторном практикуме вы сначала изучили, как читать и сортировать массив чисел с помощью простого алгоритма сортировки пузырьком. Этот шаг подготовил набор данных для вычисления размаха. Далее вы узнаете, как найти размах набора данных, вычитая минимальное значение из максимального значения в отсортированном массиве. Наконец, вы выведете вычисленный размах. Ключевыми моментами, изученными в завершенных шагах, являются чтение и сортировка массива, а также понятие размаха набора данных.