Parte 1: Fazer uma função que recebe um vetor V de elementos reais, sua dimensão N e retorne o mesmo vetor V ordenado.
Parte 2: Fazer uma função que recebe um determinado valor inteiro N e retorne um valor inteiro igual a 1 se N for par e será igual a zero se N for impar.
Parte 3: Fazer uma função que recebe um vetor V de elementos reais, sua dimensão N e retorne a média aritmética dos elementos do vetor.
Parte 4: Escrever um programa que leia um vetor de elementos reais de dimensão N <= 50 e, utilizando os subprogramas acima, gere e exiba a mediana dos elementos do vetor. A mediana é definida da seguinte maneira:
  • para N impar, a mediana é definida como o valor central do vetor ordenado
  • para N par, a mediana é definida como a média aritmética dos dois elementos centrais do vetor ordenado

Passo 1

Vamos implementar o exercício em quatro subprogramas e depois montar o programa principal para calcular a mediana de um vetor.

Passo 2

Primeiro, criamos a função de teste de paridade. Ela recebe um inteiro N e retorna 1 se N for par e 0 caso contrário. Em C isso fica simples usando o operador módulo.

Passo 3

Em seguida, fazemos a função de média aritmética. Ela recebe um vetor V de reais e sua dimensão N, soma todos os elementos e divide o total por N, retornando um double.

Passo 4

Depois, implementamos a função de ordenação. Podemos usar um algoritmo simples, como o bubble sort, já que N ≤ 50. Essa função recebe o vetor V e sua dimensão N e rearranja os elementos em ordem crescente.

Passo 5

Por fim, no programa principal, lemos N e o vetor V, chamamos a ordenação, verificamos se N é par ou ímpar com is_even, e então calculamos a mediana: se N for ímpar pegamos o elemento central, se for par fazemos a média dos dois do meio usando a função average. Por fim, exibimos o resultado.

Resposta

#include <stdio.h>
// Parte 2: retorna 1 se N for par, 0 se N for ímpar
int is_even(int N) {
return (N % 2 == 0) ? 1 : 0;
}
// Parte 3: calcula a média aritmética de um vetor de N elementos
double average(double V[], int N) {
double sum = 0.0;
for (int i = 0; i < N; i++) {
sum += V[i];
}
return sum / N;
}
// Parte 1: ordena o vetor V de dimensão N (bubble sort)
void sort_array(double V[], int N) {
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - 1 - i; j++) {
if (V[j] > V[j + 1]) {
double temp = V[j];
V[j] = V[j + 1];
V[j + 1] = temp;
}
}
}
}
int main() {
int N;
double V[50];
// Leitura de N
printf("Digite o número de elementos N (<=50): ");
scanf("%d", &N);

// Leitura do vetor
printf("Digite os %d elementos do vetor:\n", N);
for (int i = 0; i < N; i++) {
    scanf("%lf", &V[i]);
}

// Ordena o vetor
sort_array(V, N);

// Calcula a mediana
double median;
if (is_even(N)) {
    // N par: média dos dois valores centrais
    double middle_vals[2] = { V[N/2 - 1], V[N/2] };
    median = average(middle_vals, 2);
} else {
    // N ímpar: valor central
    median = V[N/2];
}

// Exibe a mediana
printf("Mediana = %.4f\n", median);

return 0;
}

Exercícios relacionados