Faça um algoritmo que permita ao usuário informar a idade de quantas pessoas ele desejar. Após isso o algoritmo deve informar a soma das pessoas maiores de idade e a média de idade das pessoas maiores de idade informadas.
Passo 1
O enunciado pede que a gente faça um algoritmo que permita ao usuário informar a idade de quantas pessoas ele desejar e, ao final, informe:
- a soma das pessoas maiores de idade (isto é, o total de pessoas que são maiores de idade — vou entender “soma” aqui como a contagem/quantidade de pessoas com 18 anos ou mais);
- a média de idade das pessoas maiores de idade informadas.
Informações relevantes dadas (ou que vamos assumir para o problema):
- O usuário pode informar “quantas pessoas desejar” — portanto precisamos de um mecanismo para ler várias idades até que o usuário decida parar.
- A maioridade consideraremos como “idade maior ou igual a 18” (ou seja, a pessoa é maior de idade quando sua idade satisfaz
). - Devemos evitar divisão por zero ao calcular a média, ou seja, tratar o caso em que nenhuma pessoa maior de idade foi informada.
- Não foi dado um formato obrigatório (linguagem). Vou apresentar um algoritmo claro e fácil de implementar (pseudocódigo e um exemplo em Python), e cuidar da validação básica de entradas.
Passo 2
Escolha do método para permitir entradas “até quando quiser”: vamos usar um laço com sentinela. Explico o que é isso de forma simples:
- Sentinela é um valor especial que o usuário digita para dizer “já terminei” — por exemplo,
. - Enquanto o usuário não digitar a sentinela, o programa continua lendo idades.
Motivo: é simples de implementar na prova e não exige que o usuário diga antes quantas idades vai informar.
Variáveis que vamos usar (vou explicar cada uma):
-
: variável que guarda a idade lida a cada iteração. -
: conta quantas pessoas maiores de idade foram informadas (é o que você pediu como “soma das pessoas maiores de idade”). -
: soma das idades das pessoas maiores de idade (precisamos dela para calcular a média). -
: média das idades das pessoas maiores de idade (será calculada no fim por , se ).
Inicialização:
- Antes de começar o laço, devemos inicializar
e .
Critério para considerar maior de idade:
- Se
então a pessoa é maior de idade — incrementamos e somamos a .
Validação básica:
- Idades negativas (exceto o sentinela) ou absurdas podem ser rejeitadas com uma mensagem e o programa pede a idade novamente.
Passo 3
Descrevendo o algoritmo passo a passo (a lógica dentro do laço), com explicação de cada passo:
- Peça ao usuário que informe uma idade ou o sentinela
para terminar. Armazene em . - Se
, saia do laço (acabou). - Senão, verifique se
é um número válido (por exemplo, e ). Se inválido, informe erro e volte ao passo 1. - Se
, então: - faça
(explicando: isto aumenta em uma unidade o número de adultos contados), - faça
(explicando: acumulamos a idade para depois calcular a média).
- faça
- Volte ao passo 1 (peça a próxima idade).
- Quando o laço terminar (usuário digitou
), verifique: - se
, então não há pessoas maiores de idade informadas — informe isso ao usuário (e não calcule média). - se
, calcule . Explique a fórmula: média é a soma das idades dividida pela quantidade de pessoas consideradas. - Mostre ao usuário o valor de
(quantas pessoas maiores de idade) e o valor de . Se quiser, mostre também .
- se
Observações sobre aritmética:
- A divisão para média geralmente deve resultar em número real (por ex.,
). Em linguagens de programação, certifique-se de fazer divisão real (float) e não divisão inteira. - Exemplo concreto para fixar: entradas 20, 15, 30, 18, -1.
- Pessoas maiores: 20, 30, 18 →
. -
. -
.
- Pessoas maiores: 20, 30, 18 →
Passo 4
Implementação detalhada em pseudocódigo (passo a passo) com explicações das construções:
- Inicialize
. - Inicialize
. - Loop infinito:
- Leia
. - Se
então pare o loop. - Se
ou então mostrar “idade inválida” e continue (volte a pedir). - Se
então faça: -
- Leia
- Após o loop:
- Se
então mostrar “Nenhuma pessoa maior de idade informada.” - Senão calcular
e mostrar e .
- Se
Explicando comandos do pseudocódigo:
- “Leia” significa solicitar ao usuário um valor e armazená-lo.
- “Se … então … senão …” é a condicional que escolhe ações conforme a idade.
- “Loop infinito” com saída pelo sentinela é uma forma prática de permitir entradas ilimitadas.
Passo 5
Exemplo de implementação em Python (prática, fácil de copiar e testar). Comentários curtos para garantir que você entenda cada linha:
- O código abaixo segue exatamente a lógica explicada. Copie e rode num interpretador Python se quiser testar.
Resposta
# Algoritmo: contar pessoas maiores de idade e calcular média das idades dos maiores
contador = 0
soma_idades = 0
while True:
entrada = input("Informe a idade (ou -1 para terminar): ")
try:
idade = int(entrada)
except ValueError:
print("Entrada inválida: digite um número inteiro para a idade.")
continue
if idade == -1:
break
if idade < 0 or idade > 130:
print("Idade inválida. Digite um valor entre 0 e 130, ou -1 para terminar.")
continue
if idade >= 18:
contador += 1
soma_idades += idade
# Resultado
if contador == 0:
print("Nenhuma pessoa maior de idade foi informada.")
else:
media = soma_idades / contador
print("Quantidade de pessoas maiores de idade:", contador)
print("Média de idade das pessoas maiores de idade: {:.3f}".format(media))