Faça um programa que possua uma função para
  • ler 2 notas e retorná-las por parâmetro (chamar uma função dedicada a ler 2 notas válidas e que devolver os 2 números lidos);
  • calcular a média simples e a média ponderada e retorná-las por parâmetro, onde a segunda nota tem peso 2 media_ponderada =(n 1+n 2 * 2) / 3;

Passo 1

O exercício pede um programa em C que tenha duas funções: uma para ler duas notas válidas e devolvê-las por parâmetro, e outra para calcular a média simples e a média ponderada. Vamos usar passo a passo a passagem por referência (ponteiros) em C e as fórmulas de média.

Passo 2

Implementar a função de leitura de notas. Criamos a função:
void lerNotas(float *n1, float *n2)
que recebe dois ponteiros para float. Dentro dela usamos loops do…while para garantir que cada nota lida fique entre 0 e 10. Usamos scanf com & para armazenar no endereço correto.

Passo 3

Implementar a função de cálculo das médias. Criamos a função:
void calcularMedias(float n1, float n2, float *media_simples, float *media_ponderada)
que recebe as duas notas por valor e dois ponteiros para float onde devolverá os resultados. Aplicamos as fórmulas:
mediasimp<=s = n1 + n22
mediaponderada = n1 + 2 cdot n23
Armazenamos cada resultado no ponteiro correspondente.

Passo 4

Escrever a função main. Declaramos as variáveis nota1, nota2, ms, mp. Chamamos lerNotas(&nota1, &nota2) para obter as notas. Depois chamamos calcularMedias(nota1, nota2, &ms, &mp). Por fim, exibimos as duas médias com printf e formatador %.2f.

Resposta

#include <stdio.h>
void lerNotas(float *n1, float *n2) {
do {
printf(“Digite a primeira nota (0-10): “);
scanf(”%f”, n1);
if (*n1 < 0 || *n1 > 10)
printf(“Nota inválida! Tente novamente.\n”);
} while (*n1 < 0 || *n1 > 10);
do {
    printf("Digite a segunda nota (0-10): ");
    scanf("%f", n2);
    if (*n2 < 0 || *n2 > 10)
        printf("Nota inválida! Tente novamente.\n");
} while (*n2 < 0 || *n2 > 10);
}
void calcularMedias(float n1, float n2, float *media_simples, float *media_ponderada) {
*media_simples = (n1 + n2) / 2.0f;
*media_ponderada = (n1 + 2.0f * n2) / 3.0f;
}
int main() {
float nota1, nota2, ms, mp;
lerNotas(&nota1, &nota2);
calcularMedias(nota1, nota2, &ms, &mp);

printf("Média simples: %.2f\n", ms);
printf("Média ponderada: %.2f\n", mp);

return 0;
}

Exercícios relacionados