Encontrar o Intervalo de um Conjunto de Dados em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a encontrar o intervalo de um conjunto de dados em programação C. O laboratório cobre os seguintes passos: 1) Ler e ordenar o array, 2) Calcular o intervalo encontrando a diferença entre os valores máximo e mínimo, e 3) Imprimir o intervalo. O laboratório fornece um guia passo a passo com código de exemplo para ajudá-lo a compreender o processo de análise de propriedades estatísticas de um conjunto de dados usando C.

Ler e Ordenar o Array

Neste passo, você aprenderá como ler um array de números e ordená-lo para se preparar para calcular o intervalo. Usaremos uma abordagem simples para a entrada e organização dos dados.

Primeiro, vamos criar um programa C para ler e ordenar um array:

#include <stdio.h>

#define MAX_SIZE 100

// Função para trocar dois elementos
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Função de ordenação por bolha para ordenar o 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;

    // Ler o número de elementos
    printf("Digite o número de elementos (máximo %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Entrada dos elementos do array
    printf("Digite %d inteiros:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

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

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

    return 0;
}

Vamos decompor os componentes-chave:

  1. Definimos um tamanho máximo de array de 100 elementos.
  2. A função swap() ajuda a trocar dois elementos do array.
  3. sortArray() usa a ordenação por bolha para organizar os elementos em ordem crescente.
  4. Em main(), fazemos o seguinte:
    • Ler o número de elementos
    • Ler os elementos do array
    • Ordenar o array
    • Imprimir o array ordenado

Exemplo de compilação e execução:

gcc -o array_sort array_sort.c
./array_sort

Exemplo de saída:

Digite o número de elementos (máximo 100): 5
Digite 5 inteiros:
42 15 7 23 11
Array ordenado: 7 11 15 23 42

Range = Máximo - Mínimo

Neste passo, você aprenderá a calcular o intervalo de um conjunto de dados encontrando a diferença entre os valores máximo e mínimo no array ordenado.

Vamos modificar o programa anterior para calcular o intervalo:

#include <stdio.h>

#define MAX_SIZE 100

// Função para trocar dois elementos
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Função de ordenação por bolha para ordenar o 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]);
            }
        }
    }
}

// Função para calcular o intervalo
int calculateRange(int arr[], int size) {
    // Se o array estiver vazio, retorna 0
    if (size == 0) return 0;

    // O intervalo é a diferença entre o último (máximo) e o primeiro (mínimo) elementos
    return arr[size - 1] - arr[0];
}

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

    // Ler o número de elementos
    printf("Digite o número de elementos (máximo %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Entrada dos elementos do array
    printf("Digite %d inteiros:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

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

    // Calcular e imprimir o intervalo
    int range = calculateRange(numbers, n);

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

    return 0;
}

Modificações-chave neste passo:

  1. Adicionada a função calculateRange() para calcular o intervalo
  2. O intervalo é calculado subtraindo o primeiro (mínimo) elemento do último (máximo) elemento no array ordenado
  3. Adicionadas instruções de impressão para mostrar os valores mínimo, máximo e do intervalo

Exemplo de compilação e execução:

gcc -o range_calculator range_calculator.c
./range_calculator

Exemplo de saída:

Digite o número de elementos (máximo 100): 5
Digite 5 inteiros:
42 15 7 23 11
Valor mínimo: 7
Valor máximo: 42
Intervalo: 35

O intervalo representa a amplitude do conjunto de dados, calculado subtraindo o menor valor do maior valor no array ordenado.

Imprimir o Intervalo

Neste passo final, você aprenderá a formatar e exibir os resultados do cálculo do intervalo de forma amigável ao usuário, adicionando algum contexto estatístico à saída.

Vamos criar uma versão aprimorada do nosso programa de cálculo de intervalo:

#include <stdio.h>

#define MAX_SIZE 100

// Função para trocar dois elementos
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Função de ordenação por bolha para ordenar o 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]);
            }
        }
    }
}

// Função para calcular o intervalo
int calculateRange(int arr[], int size) {
    // Se o array estiver vazio, retorna 0
    if (size == 0) return 0;

    // O intervalo é a diferença entre o último (máximo) e o primeiro (mínimo) elementos
    return arr[size - 1] - arr[0];
}

// Função para imprimir informações detalhadas sobre o intervalo
void printRangeAnalysis(int arr[], int size, int range) {
    printf("\n--- Análise Estatística do Intervalo ---\n");
    printf("Tamanho do Conjunto de Dados: %d\n", size);
    printf("Valor Mínimo: %d\n", arr[0]);
    printf("Valor Máximo: %d\n", arr[size - 1]);
    printf("Intervalo: %d\n", range);

    // Informações adicionais
    printf("\nInterpretação:\n");
    printf("O intervalo representa a dispersão dos valores no conjunto de dados.\n");
    printf("Um intervalo maior indica mais variabilidade nos dados.\n");
}

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

    // Ler o número de elementos
    printf("Digite o número de elementos (máximo %d): ", MAX_SIZE);
    scanf("%d", &n);

    // Entrada dos elementos do array
    printf("Digite %d inteiros:\n", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

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

    // Calcular o intervalo
    int range = calculateRange(numbers, n);

    // Imprimir análise detalhada do intervalo
    printRangeAnalysis(numbers, n, range);

    return 0;
}

Melhorias-chave neste passo:

  1. Adicionada a função printRangeAnalysis() para fornecer uma saída abrangente
  2. Incluído contexto adicional sobre o intervalo e a variabilidade dos dados
  3. Formatado a saída para ser mais informativa e legível

Exemplo de compilação e execução:

gcc -o range_analysis range_analysis.c
./range_analysis

Exemplo de saída:

Digite o número de elementos (máximo 100): 6
Digite 6 inteiros:
10 25 7 42 15 33

--- Análise Estatística do Intervalo ---
Tamanho do Conjunto de Dados: 6
Valor Mínimo: 7
Valor Máximo: 42
Intervalo: 35

Interpretação:
O intervalo representa a dispersão dos valores no conjunto de dados.
Um intervalo maior indica mais variabilidade nos dados.

O programa agora fornece uma visão mais abrangente do intervalo do conjunto de dados, ajudando os usuários a entender a significância estatística do cálculo.

Resumo

Neste laboratório, você aprendeu inicialmente a ler e ordenar um array de números usando um algoritmo de ordenação por bolhas simples. Esta etapa preparou o conjunto de dados para o cálculo do intervalo. Em seguida, você aprenderá a encontrar o intervalo do conjunto de dados subtraindo o valor mínimo do valor máximo no array ordenado. Finalmente, você imprimirá o intervalo calculado. Os pontos-chave de aprendizado das etapas concluídas são a leitura e ordenação de um array, bem como o conceito de intervalo de um conjunto de dados.