Escreva um programa completo que permita a qualquer aluno introduzir, pelo teclado, uma sequência arbitrária de notas (válidas no intervalo de 10 a 20) e que mostre na tela, como resultado, a correspondente média aritmética. O número de notas com que o aluno pretenda efetuar o cálculo não será fornecido ao programa, o qual terminará quando for introduzido um valor que não seja válido como nota de aprovação.
Passo 1
O programa deve permitir que o usuário introduza notas no intervalo de 10 a 20 até que seja digitada uma nota fora desse intervalo, e ao final calcular a média aritmética das notas válidas. Para isso vamos usar um loop de leitura infinita com uma condição de parada (sentinela), variáveis para acumular soma e contar quantas notas foram válidas, e ao final computar a média.
Passo 2
Declarar as variáveis necessárias: uma do tipo float para armazenar cada nota lida (nota), outra do tipo float para acumular a soma das notas (soma) e uma variável inteira para contar quantas notas válidas foram introduzidas (cont). Inicializar soma com 0.0 e cont com 0.
Passo 3
Usar um loop infinito (por exemplo while(1)) para ler sucessivamente as notas. A cada iteração, solicitar ao usuário que digite uma nota e usar scanf para ler o valor em nota.
Passo 4
Após ler a nota, verificar se ela está fora do intervalo válido (nota < 10.0 || nota > 20.0). Se estiver, usar break para sair do loop de leitura.
Passo 5
Se a nota for válida, adicionar seu valor à variável soma e incrementar cont em 1, retornando ao topo do loop para ler a próxima nota.
Passo 6
Depois de sair do loop, verificar se cont > 0. Se sim, calcular a média como soma/cont e imprimir o resultado com duas casas decimais. Caso contrário, imprimir uma mensagem informando que nenhuma nota válida foi introduzida.
Passo 7
Encerrar o programa retornando 0 para indicar término normal.
Resposta
#include <stdio.h>
int main() {
float nota, soma = 0.0f;
int cont = 0;
float nota, soma = 0.0f;
int cont = 0;
printf("Introduza as notas (10 a 20). Para terminar, escreva um valor fora desse intervalo.\n");
while (1) {
printf("Nota: ");
if (scanf("%f", ¬a) != 1) {
// Se a leitura falhar, interrompe
printf("Entrada inválida.\n");
break;
}
if (nota < 10.0f || nota > 20.0f) {
// Condição de parada: nota fora do intervalo
break;
}
soma += nota;
cont++;
}
if (cont > 0) {
printf("Média: %.2f\n", soma / cont);
} else {
printf("Nenhuma nota válida foi introduzida.\n");
}
return 0;
}