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
;
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.
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:
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:
Armazenamos cada resultado no ponteiro correspondente.
Passo 4
Escrever a função main. Declaramos as variáveis nota1, nota2, ms, mp. Chamamos lerNotas(¬a1, ¬a2) 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 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;
}
*media_simples = (n1 + n2) / 2.0f;
*media_ponderada = (n1 + 2.0f * n2) / 3.0f;
}
int main() {
float nota1, nota2, ms, mp;
float nota1, nota2, ms, mp;
lerNotas(¬a1, ¬a2);
calcularMedias(nota1, nota2, &ms, &mp);
printf("Média simples: %.2f\n", ms);
printf("Média ponderada: %.2f\n", mp);
return 0;
}