Faça um programa que receba a idade e o peso de quinze pessoas, e que calcule e mostre as médias dos pesos das pessoas da mesma faixa etária. As faixas etárias são: de 1 a 10 anos, de 11 a 20 anos, de 21 a 30 anos e de 31 anos para cima.
Passo 1
O enunciado pede que a gente escreva um programa que leia a idade e o peso de exatamente
pessoas e calcule as médias dos pesos das pessoas em cada uma das quatro faixas etárias seguintes:
Informações dadas:
- O número total de pessoas é
. - Para cada pessoa temos dois dados de entrada:
e . - Resultado desejado: a média dos pesos dentro de cada faixa etária (quatro médias diferentes).
Passo 2
Vamos planejar como calcular uma média por faixa. Conceitos importantes (explicação didática):
- Acumulador: variável que guarda a soma dos pesos de uma faixa. Vou chamar de
para a -ésima faixa. Ex.: é a soma dos pesos da faixa 1. - Contador: variável que conta quantas pessoas caíram naquela faixa. Vou chamar de
. Ex.: é o número de pessoas na faixa 1. - Fórmula da média: se na faixa
a soma dos pesos é e o número de pessoas é , a média é
Explicando a fórmula: a média é simplesmente a soma dos valores dividida pela quantidade de valores. Por isso precisamos do acumulador (soma) e do contador (quantidade).
Inicialização: antes de ler qualquer dado, devemos definir
Isso evita lixo de memória e garante que, se não entrar ninguém numa faixa, o contador será
.
Passo 3
Como ler e classificar os dados (procedimento passo a passo):
- Vamos fazer um loop que se repete
vezes (uma iteração por pessoa). - Em cada iteração:
- Ler a
(um número inteiro) e o (um número real). - Verificar em qual faixa a idade se encaixa usando condições do tipo
, , etc. - Atualizar o acumulador e o contador correspondentes. Por exemplo, se
, fazemos
- Repetir para as demais faixas:
- Ler a
Observação sobre validade: idealmente validar se a idade é positiva. Se a entrada puder ser inválida, o programa pode pedir repetição, mas aqui assumimos que as
entradas são válidas (como o enunciado diz).
Passo 4
Como calcular e mostrar as médias no final (detalhes e cuidados):
- Após terminar as
leituras, para cada faixa devemos verificar se o contador é maior que para evitar divisão por zero. - Cálculo:
- Escolha de apresentação: normalmente mostramos as médias com duas casas decimais, por exemplo
. Para isso usamos formatação numérica (em muitas linguagens existe algo como formatar com duas casas: "{:.2f}".format(valor)ouf"{valor:.2f}").
Por que verificar
? Se
e tentarmos dividir
teremos divisão por zero, o que é indefinido e causaria erro no programa.
Passo 5
Pequeno exemplo numérico para fixar (ilustrativo, não é necessário executar para resolver o problema):
- Suponha que, só para exemplificar, na faixa 1 entraram duas pessoas com pesos
e . Então e . A média fica
- Se numa faixa não entrou ninguém, dizemos que não há média ou que ela é indefinida.
Passo 6
Resumo do algoritmo (pra você decorar antes da prova):
- Inicializar
e com . - Repetir
vezes: ler e ; testar em qual faixa a idade pertence e atualizar soma e contador da faixa. - Para cada faixa, se
calcular e mostrar; senão mostrar que não há pessoas naquela faixa. - Formatar a saída com, por exemplo, duas casas decimais.
Resposta
# Programa em Python que lê idade e peso de 15 pessoas e calcula as médias por faixa etária
S1 = S2 = S3 = S4 = 0.0 # somas dos pesos das quatro faixas
n1 = n2 = n3 = n4 = 0 # contadores de pessoas em cada faixa
for i in range(15):
idade = int(input(f"Pessoa {i+1} - idade: "))
peso = float(input(f"Pessoa {i+1} - peso (kg): "))
if 1 <= idade <= 10:
S1 += peso
n1 += 1
elif 11 <= idade <= 20:
S2 += peso
n2 += 1
elif 21 <= idade <= 30:
S3 += peso
n3 += 1
elif idade >= 31:
S4 += peso
n4 += 1
else:
# Caso queira tratar idades inválidas (<=0), aqui apenas ignoramos essa entrada
print("Idade inválida (considerar >= 1). Entrada ignorada para fins de contagem.")
# Função auxiliar para imprimir média com verificação de divisão por zero
def imprimir_media(soma, contador, faixa_descr):
if contador > 0:
media = soma / contador
print(f"Média de pesos {faixa_descr}: {media:.2f} kg (n={contador})")
else:
print(f"Média de pesos {faixa_descr}: nenhuma pessoa nesta faixa.")
imprimir_media(S1, n1, "1 a 10 anos")
imprimir_media(S2, n2, "11 a 20 anos")
imprimir_media(S3, n3, "21 a 30 anos")
imprimir_media(S4, n4, "31 anos ou mais")