As questões devem ser implementadas em C.
Escreva um programa que calcule a média dos números digitados pelo usuário se eles forem pares. Termine a leitura se o usuário digitar 0. (2)

Passo 1

O enunciado pede que seja escrito um programa em C que:
  • Leia números digitados pelo usuário até que o usuário digite 0 (quando aparecer 0 a leitura termina).
  • Calcule a média apenas dos números que forem pares dentre os números digitados.
  • Não inclua o 0 de terminação na média (ou seja, 0 termina a leitura e não é contabilizado).
    Dados relevantes:
  • Entrada: uma sequência de números inteiros fornecidos pelo usuário, terminada por 0.
  • Saída esperada: a média aritmética dos números pares digitados; se nenhum número par for digitado, deve ser tratada essa situação (por exemplo, informando que não houve pares).

Passo 2

Algoritmo geral em linguagem natural (passo a passo):
  1. Inicializar duas variáveis: \text{soma} para acumular os números pares e \text{contagem} para contar quantos pares foram lidos. Ambas começam em zero.
  2. Repetir:
    • Ler um número inteiro n.
    • Se n = 0, interromper a leitura (sair do laço). O 0 não é processado.
    • Caso contrário, verificar se n é par. Se for, acrescentar n em \text{soma} e incrementar \text{contagem}.
  3. Após sair do laço, verificar se \text{contagem} > 0. Se sim, calcular a média por \displaystyle \text{média} = \dfrac{\text{soma}}{\text{contagem}}é e imprimir. Se não, imprimir mensagem indicando que nenhum número par foi digitado.

Passo 3

Como testar se um número é par:
  • Em C usa-se o operador resto da divisão inteira: o operador é o símbolo \verb|%|.
  • A condição para par é \verb|n % 2 == 0|.
  • Exemplos (conceito):
    • (4 \bmod 2) = 0 portanto 4 é par.
    • (5 \bmod 2) = 1 portanto 5 não é par.
      Observação importante: o 0 é um número par matematicamente, mas no enunciado 0 serve exclusivamente para terminar a leitura — por isso, ao detectar n==0 deve-se encerrar sem adicionar esse 0 na soma/contagem.

Passo 4

Estrutura do laço em C:
  • Pode-se usar um laço infinito e fazer um \verb|break| quando n==0, por exemplo:
    • \verb|while (1) { scanf("%d", &n); if (n==0) break; … }|
  • Leitura com \verb|scanf|: sempre verificar o retorno de \verb|scanf| é bom (retorna quantos itens foram lidos), para detectar entrada inválida.
  • Ao detectar um número diferente de 0, aplicar o teste de par e atualizar \text{soma} e \text{contagem}.

Passo 5

Tipos de dados e cálculo da média:
  • Usar uma variável inteira para a leitura do número (\verb|int n|).
  • Usar \verb|long long soma| para acumular a soma (protege de estouro se o usuário digitar muitos ou muito grandes números).
  • Usar \verb|int contagem| para contar quantos pares foram lidos.
  • Para calcular a média como número real, fazer a conversão explícita para \verb|double| antes da divisão, evitando divisão inteira. Em fórmula: \text{média} = \frac{\text{soma}}{\text{contagem}}ée em C usa-se \verb|(double)soma / contagem| para obter o resultado em ponto flutuante.

Passo 6

Tratamento do caso sem pares e formato de saída:
  • Se \text{contagem} = 0 (nenhum número par foi lido antes do 0), imprimir uma mensagem clara, por exemplo: “Nenhum número par foi digitado.”
  • Caso contrário, imprimir a média. Uma boa formatação é mostrar a média com duas casas decimais, usando \verb|printf(“Média dos pares: %.2f\n”, media);|.

Passo 7

Exemplo rápido de execução mental para conferir o algoritmo:
  • Entradas: 3, 4, 7, 8, 0.
  • Números pares lidos: 4 e 8.
  • \text{soma} = 4 + 8 = 12.
  • \text{contagem} = 2.
  • \text{média} = 12 / 2 = 6{,}0é.
  • Saída esperada: “Média dos pares: 6.00”.

Passo 8

Dicas para a prova:
  • Lembre-se de não incluir o 0 de terminação no cálculo.
  • Sempre evite a divisão por zero verificando a contagem antes de dividir.
  • Use casting explícito para \verb|double| ao calcular a média para não correr o risco de divisão inteira.

Resposta

#include <stdio.h>

int main(void) {
    long long soma = 0;
    int contagem = 0;
    int n;

    printf("Digite números inteiros (0 para terminar):\n");
    while (1) {
        if (scanf("%d", &n) != 1) {
            fprintf(stderr, "Entrada inválida.\n");
            return 1;
        }
        if (n == 0) {
            break; /* 0 termina a leitura e não é contabilizado */
        }
        if (n % 2 == 0) {
            soma += n;
            contagem++;
        }
    }

    if (contagem == 0) {
        printf("Nenhum número par foi digitado.\n");
    } else {
        double media = (double)soma / contagem;
        printf("Média dos pares: %.2f\n", media);
    }

    return 0;
}

Exercícios relacionados