Determinar a Moda de um Conjunto de Dados em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a determinar a moda de um conjunto de dados em C. O laboratório cobre os seguintes passos:

Leitura do Array de Números: Você aprenderá como ler um array de números em C, que é o primeiro passo crucial na determinação da moda de um conjunto de dados. O programa permite a entrada de um conjunto de números e os prepara para a análise de frequência.

Contagem de Frequências para Encontrar o Valor Mais Comum: Você modificará o programa anterior para contar as frequências de cada número no array e identificar o valor mais comum (moda).

Impressão da Moda: Finalmente, você imprimirá a moda, que é o valor que aparece com maior frequência no conjunto de dados.

Leitura do Array de Números

Neste passo, você aprenderá a ler um array de números em C, que é o primeiro passo crucial na determinação da moda de um conjunto de dados. Criaremos um programa C que permite a entrada de um conjunto de números e os prepara para a análise de frequência.

Primeiro, vamos criar um novo arquivo C para nosso programa de cálculo da moda:

cd ~/project
nano mode_calculation.c

Agora, adicione o seguinte código ao arquivo:

#include <stdio.h>

#define MAX_SIZE 100

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

    // Entrada do 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 (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Imprime o array inserido para verificar a entrada
    printf("Array inserido: ");
    for (i = 0; i < n; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    return 0;
}

Compile e execute o programa:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Exemplo de saída:

Digite o número de elementos (máximo 100): 5
Digite 5 inteiros:
3 4 2 4 1
Array inserido: 3 4 2 4 1

Vamos analisar as partes principais deste código:

  1. #define MAX_SIZE 100 define um limite máximo para o array para evitar estouro.
  2. scanf() é usado para inserir o número de elementos e os valores do array.
  3. Imprimimos o array para verificar se a entrada foi capturada corretamente.

O código demonstra a entrada básica de arrays em C, essencial para o nosso processo de cálculo da moda. Nos próximos passos, construiremos sobre isso para contar frequências e determinar a moda.

Contagem de Frequências para Encontrar o Valor Mais Comum

Neste passo, modificaremos nosso programa anterior para contar as frequências de cada número no array e identificar o valor mais comum (moda).

Abra o arquivo existente e atualize o código:

cd ~/project
nano mode_calculation.c

Substitua o código anterior pela seguinte implementação:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int frequencies[MAX_SIZE] = {0};
    int n, i, j, mode = 0, max_frequency = 0;

    // Entrada do 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 (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Contagem de frequências de cada número
    for (i = 0; i < n; i++) {
        int count = 1;
        for (j = 0; j < n; j++) {
            if (i != j && numbers[i] == numbers[j]) {
                count++;
            }
        }
        frequencies[i] = count;

        // Rastreamento da moda
        if (count > max_frequency) {
            max_frequency = count;
            mode = numbers[i];
        }
    }

    // Impressão das frequências
    printf("\nFrequências:\n");
    for (i = 0; i < n; i++) {
        printf("Número %d aparece %d vez(es)\n", numbers[i], frequencies[i]);
    }

    // Impressão da moda
    printf("\nModa: %d (aparece %d vezes)\n", mode, max_frequency);

    return 0;
}

Compile e execute o programa:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Exemplo de saída:

Digite o número de elementos (máximo 100): 6
Digite 6 inteiros:
2 3 4 2 2 5

Frequências:
2 aparece 3 vez(es)
3 aparece 1 vez(es)
4 aparece 1 vez(es)
2 aparece 3 vez(es)
2 aparece 3 vez(es)
5 aparece 1 vez(es)

Moda: 2 (aparece 3 vezes)

Pontos-chave desta implementação:

  1. Criamos um array frequencies para armazenar a contagem de cada número.
  2. Loops aninhados contam as ocorrências de cada número único.
  3. Rastreamos a moda mantendo o controle da frequência máxima.
  4. O programa lida com casos com uma única moda.

Impressão da Moda

Neste passo final, aprimoraremos nosso programa de cálculo da moda para lidar com múltiplas modas e fornecer uma saída mais abrangente de informações estatísticas.

Abra o arquivo existente e atualize o código:

cd ~/project
nano mode_calculation.c

Substitua o código anterior pela seguinte implementação:

#include <stdio.h>

#define MAX_SIZE 100

int main() {
    int numbers[MAX_SIZE];
    int frequencies[MAX_SIZE] = {0};
    int unique_numbers[MAX_SIZE];
    int n, i, j, unique_count = 0, max_frequency = 0;

    // Entrada do 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 (i = 0; i < n; i++) {
        scanf("%d", &numbers[i]);
    }

    // Encontrar números únicos e suas frequências
    for (i = 0; i < n; i++) {
        int is_unique = 1;
        for (j = 0; j < unique_count; j++) {
            if (numbers[i] == unique_numbers[j]) {
                is_unique = 0;
                break;
            }
        }

        if (is_unique) {
            unique_numbers[unique_count] = numbers[i];

            // Contar a frequência deste número único
            int count = 0;
            for (j = 0; j < n; j++) {
                if (numbers[i] == numbers[j]) {
                    count++;
                }
            }
            frequencies[unique_count] = count;

            // Atualizar a frequência máxima
            if (count > max_frequency) {
                max_frequency = count;
            }

            unique_count++;
        }
    }

    // Imprimir informações detalhadas da moda
    printf("\nAnálise Estatística:\n");
    printf("Números Totais: %d\n", n);
    printf("Números Únicos: %d\n", unique_count);

    printf("\nDistribuição de Frequências:\n");
    for (i = 0; i < unique_count; i++) {
        printf("Número %d: %d vez(es)\n",
               unique_numbers[i], frequencies[i]);
    }

    // Imprimir as modas
    printf("\nModa(s):\n");
    for (i = 0; i < unique_count; i++) {
        if (frequencies[i] == max_frequency) {
            printf("- %d (aparece %d vez(es))\n",
                   unique_numbers[i], frequencies[i]);
        }
    }

    return 0;
}

Compile e execute o programa:

gcc mode_calculation.c -o mode_calculation
./mode_calculation

Exemplo de saída:

Digite o número de elementos (máximo 100): 7
Digite 7 inteiros:
2 3 4 2 2 5 5

Análise Estatística:
Números Totais: 7
Números Únicos: 4

Distribuição de Frequências:
Número 2: 3 vez(es)
Número 3: 1 vez(es)
Número 4: 1 vez(es)
Número 5: 2 vez(es)

Moda(s):
- 2 (aparece 3 vezes)

Melhorias-chave nesta versão:

  1. Lidar com múltiplas modas, se existirem.
  2. Fornecer uma visão estatística abrangente.
  3. Identificar números únicos no conjunto de dados.
  4. Exibir a distribuição de frequências.

Resumo

Neste laboratório, você aprenderá como ler um array de números em C e contar as frequências de cada número para determinar a moda, que é o valor mais comum no conjunto de dados. Primeiro, você criará um programa em C que permite a entrada de um conjunto de números e os prepara para a análise de frequência. Em seguida, você modificará o programa para contar as frequências de cada número e identificar a moda. Finalmente, você imprimirá a moda no console.

Os principais pontos de aprendizado das etapas concluídas são:

  1. Como ler um array de números em C usando a função scanf().
  2. Como imprimir o array inserido para verificar a entrada.
  3. Como contar as frequências de cada número no array para encontrar o valor mais comum (moda).