Introdução
Neste laboratório, você aprenderá a calcular a mediana de um conjunto de dados em programação C. O laboratório cobre os seguintes passos: leitura e ordenação de um array de números, localização do elemento do meio ou da média dos dois elementos do meio, e impressão da mediana. As instruções passo a passo guiam você através do processo de implementação dessas tarefas usando programação C, incluindo funções para leitura, ordenação e impressão do array. Este laboratório fornece uma abordagem prática para compreender e aplicar técnicas de análise estatística em C.
Ler e Ordenar o Array
Neste passo, você aprenderá a ler um array de números e ordená-lo em preparação para calcular a mediana. Usaremos programação C para realizar esta tarefa.
Primeiro, vamos criar um arquivo C para implementar a leitura e ordenação do array:
cd ~/project
nano median_calculator.c
Agora, adicione o seguinte código ao arquivo:
#include <stdio.h>
#define MAX_SIZE 100
// Função para ler os elementos do array
void readArray(int arr[], int *n) {
printf("Digite o número de elementos (máximo %d): ", MAX_SIZE);
scanf("%d", n);
printf("Digite %d elementos:\n", *n);
for (int i = 0; i < *n; i++) {
scanf("%d", &arr[i]);
}
}
// Função para ordenar o array usando o algoritmo de ordenação por bolhas
void sortArray(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// Trocar elementos
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// Função para imprimir o array
void printArray(int arr[], int n) {
printf("Array ordenado: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[MAX_SIZE];
int n;
readArray(arr, &n);
sortArray(arr, n);
printArray(arr, n);
return 0;
}
Compile e execute o programa:
gcc median_calculator.c -o median_calculator
./median_calculator
Exemplo de saída:
Digite o número de elementos (máximo 100): 5
Digite 5 elementos:
42
15
7
23
11
Array ordenado: 7 11 15 23 42
Vamos decompor o código:
- A função
readArray()permite a entrada de dados do usuário para os elementos do array. - A função
sortArray()usa o algoritmo de ordenação por bolhas para organizar os elementos em ordem crescente. - A função
printArray()exibe o array ordenado. - A função
main()conecta essas funções.
O algoritmo de ordenação por bolhas tem uma complexidade de tempo de O(n²), que é simples de entender, mas não é o mais eficiente para conjuntos de dados grandes.
Encontrar o Elemento do Meio ou a Média dos Dois Meios
Neste passo, você estenderá o programa anterior para calcular a mediana encontrando o elemento do meio ou a média dos dois elementos do meio em um array ordenado.
Abra o arquivo existente e modifique o código:
cd ~/project
nano median_calculator.c
Atualize o código com uma nova função para calcular a mediana:
#include <stdio.h>
#define MAX_SIZE 100
// Funções anteriores (readArray, sortArray, printArray) permanecem as mesmas
// Nova função para calcular a mediana
float calculateMedian(int arr[], int n) {
// Se o número de elementos for ímpar, retorna o elemento do meio
if (n % 2 != 0) {
return arr[n / 2];
}
// Se o número de elementos for par, retorna a média dos dois elementos do meio
int mid1 = arr[(n / 2) - 1];
int mid2 = arr[n / 2];
return (mid1 + mid2) / 2.0;
}
int main() {
int arr[MAX_SIZE];
int n;
readArray(arr, &n);
sortArray(arr, n);
printArray(arr, n);
// Calcular e imprimir a mediana
float median = calculateMedian(arr, n);
printf("Mediana: %.2f\n", median);
return 0;
}
Compile e execute o programa atualizado:
gcc median_calculator.c -o median_calculator
./median_calculator
Exemplo de saída para um número ímpar de elementos:
Digite o número de elementos (máximo 100): 5
Digite 5 elementos:
42
15
7
23
11
Array ordenado: 7 11 15 23 42
Mediana: 15.00
Exemplo de saída para um número par de elementos:
Digite o número de elementos (máximo 100): 6
Digite 6 elementos:
42
15
7
23
11
8
Array ordenado: 7 8 11 15 23 42
Mediana: 13.00
Pontos-chave sobre o cálculo da mediana:
- Para um número ímpar de elementos, a mediana é o elemento do meio.
- Para um número par de elementos, a mediana é a média dos dois elementos do meio.
- O array deve estar ordenado antes de calcular a mediana.
A função calculateMedian() lida com ambos os casos:
- Usa divisão inteira para encontrar o índice do meio.
- Verifica se o número de elementos é ímpar ou par.
- Retorna o valor apropriado da mediana.
Imprimir a Mediana
Neste passo final, você aprimorará o programa de cálculo da mediana para fornecer uma saída mais detalhada e demonstrar diferentes maneiras de apresentar a mediana.
Abra o arquivo existente para fazer as modificações finais:
cd ~/project
nano median_calculator.c
Atualize o código com formatação de saída aprimorada:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// Funções anteriores (readArray, sortArray, printArray, calculateMedian) permanecem as mesmas
void printDetailedMedianInfo(int arr[], int n, float median) {
printf("\n--- Detalhes do Cálculo da Mediana ---\n");
printf("Número total de elementos: %d\n", n);
printf("Elementos do array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n\nCálculo da Mediana:\n");
if (n % 2 != 0) {
printf("Número ímpar de elementos\n");
printf("Índice do elemento do meio: %d\n", n / 2);
printf("Elemento do meio: %d\n", arr[n / 2]);
} else {
printf("Número par de elementos\n");
printf("Dois índices dos elementos do meio: %d e %d\n", (n / 2) - 1, n / 2);
printf("Elementos do meio: %d e %d\n", arr[(n / 2) - 1], arr[n / 2]);
}
printf("\nMediana Final: %.2f\n", median);
}
int main() {
int arr[MAX_SIZE];
int n;
readArray(arr, &n);
sortArray(arr, n);
float median = calculateMedian(arr, n);
// Imprimir o array ordenado
printArray(arr, n);
// Imprimir informações detalhadas sobre a mediana
printDetailedMedianInfo(arr, n, median);
return 0;
}
Compile e execute o programa atualizado:
gcc median_calculator.c -o median_calculator
./median_calculator
Exemplo de saída para um número ímpar de elementos:
Digite o número de elementos (máximo 100): 5
Digite 5 elementos:
42
15
7
23
11
Array ordenado: 7 11 15 23 42
--- Detalhes do Cálculo da Mediana ---
Número total de elementos: 5
Elementos do array: 7 11 15 23 42
Cálculo da Mediana:
Número ímpar de elementos
Índice do elemento do meio: 2
Elemento do meio: 15
Mediana Final: 15.00
Exemplo de saída para um número par de elementos:
Digite o número de elementos (máximo 100): 6
Digite 6 elementos:
42
15
7
23
11
8
Array ordenado: 7 8 11 15 23 42
--- Detalhes do Cálculo da Mediana ---
Número total de elementos: 6
Elementos do array: 7 8 11 15 23 42
Cálculo da Mediana:
Número par de elementos
Dois índices dos elementos do meio: 2 e 3
Elementos do meio: 11 e 15
Mediana Final: 13.00
Melhorias-chave neste passo:
- Adicionada uma nova função
printDetailedMedianInfo(). - Fornece informações abrangentes sobre o cálculo da mediana.
- Mostra diferentes cenários para um número ímpar e par de elementos.
- Melhora a compreensão do usuário sobre o cálculo da mediana.
Resumo
Neste laboratório, você aprendeu a ler um array de números, ordená-los usando o algoritmo de ordenação por bolhas e preparar os dados para calcular a mediana. O array ordenado é então impresso no console, demonstrando o sucesso da conclusão do primeiro passo. O algoritmo de ordenação por bolhas, embora simples de entender, possui uma complexidade de tempo de O(n²), o que pode não ser o mais eficiente para conjuntos de dados grandes. Os passos subsequentes se concentrarão em encontrar a mediana do array ordenado.
O próximo passo envolve identificar o elemento do meio ou a média dos dois elementos do meio, dependendo do tamanho do array. Este passo garantirá que a mediana seja calculada e apresentada ao usuário com precisão.



