Uma jazida possui uma quantidade estimada de minério disponível para extração. Sabendo a taxa anual de exploração, o engenheiro precisa estimar por quanto tempo a jazida poderá ser explorada.
Desenvolva um programa que calcule a vida útil da jazida em anos e depois converta esse tempo para meses.
Passo 1
O enunciado pede que se desenvolva um programa que calcule a vida útil de uma jazida em anos e depois converta esse tempo para meses. Vou listar claramente o que o problema dá e o que se deve devolver.
- Dados (entradas) que o programa deve receber:
- A quantidade estimada de minério disponível para extração — vou chamar de
. (Unidade por exemplo: toneladas.) - A taxa anual de exploração — vou chamar de
. (Unidade por exemplo: toneladas por ano.)
- A quantidade estimada de minério disponível para extração — vou chamar de
- O que pedir:
- Calcular a vida útil da jazida em anos (tempo que o estoque
dura se se extrai por ano). - Converter esse tempo para meses.
- Calcular a vida útil da jazida em anos (tempo que o estoque
- Observações importantes que já ficam claras:
- Se
a vida útil é indefinida (divisão por zero) — o programa precisa tratar esse caso. - Se
a vida útil é anos (não há minério). - Pode-se devolver o tempo como número com casas decimais, e/ou como anos inteiros mais meses inteiros restantes — ambos são úteis em provas/prática.
- Se
Passo 2
Modelo matemático e fórmula principal — aqui explico a “fórmula” de modo bem didático.
- Intuição: se tenho
unidades de minério e extraio unidades por ano, quantos anos durará? - Isso é uma regra de três direta: em cada ano sai
, em anos sai . Queremos . Assim:
- Isolando
(o tempo em anos):
Aqui
é a vida útil em anos. Explicando cada símbolo:
-
= quantidade total de minério (mesma unidade que por ano). -
= taxa anual de extração (unidade por ano). -
= tempo em anos. -
Conversão para meses: como 1 ano = 12 meses, o tempo em meses
é:
Passo 3
Formato de apresentação do resultado e tratamento de partes fracionárias — como apresentar na prova sem calculadora ou no programa.
- Resultado contínuo (com casas decimais): basta mostrar
com, por exemplo, duas casas decimais e com uma casa decimal:
- Representação “anos inteiros + meses inteiros”: muitas vezes é mais legível dizer “X anos e Y meses”. Para isso:
- Calcular
(parte inteira dos anos). - Calcular a parte fracionária dos anos
. - Converter a parte fracionária em meses e arredondar para o inteiro mais próximo:
- Ajuste especial: se
após o arredondamento, transforme em e (pois 12 meses = 1 ano).
- Calcular
- Exemplo rápido e concreto (para fixar): suponha
(ton) e (ton/ano). Então
Portanto, isso dá exatamente
anos e
meses.
Passo 4
Casos especiais e validações que o programa deve fazer (isso evita erro na prova/implementação):
- Se
: a taxa de extração não pode ser zero ou negativa — tratar como erro de entrada e avisar o usuário. - Se
: quantidade negativa é inválida — avisar também. - Se
: retornar vida útil anos e meses. - Precisão e arredondamento: escolha consistente (por exemplo, mostrar anos com 2 casas decimais e meses totais com 1 casa decimal; e também apresentar a decomposição em anos inteiros + meses inteiros arredondados).
- Se a prova pedir apenas a fórmula, a resposta é
anos e meses — mas num programa convém também mostrar a decomposição em anos e meses inteiros como explicado.
Passo 5
Algoritmo passo a passo (pseudocódigo) para implementar no programa:
- Ler
(quantidade total) como número real. - Ler
(taxa anual) como número real. - Verificar entradas:
- Se
: exibir mensagem de erro e terminar. - Se
: exibir mensagem de erro e terminar.
- Se
- Se
: exibir vida útil zero e terminar. - Calcular
. - Calcular
. - Calcular
. - Calcular
. - Se
: fazer e . - Exibir resultados:
- Vida útil em anos com 2 casas decimais:
. - Vida útil em meses (total) com 1 casa decimal:
. - Vida útil em formato “A anos e M meses” (inteiros).
- Vida útil em anos com 2 casas decimais:
Resposta
# Programa: calcula vida útil de uma jazida (anos e meses)
# Entrada: Q = quantidade total de minério (float)
# r = taxa anual de exploração (float)
# Saída: vida útil em anos (float), meses totais (float) e decomposição em anos inteiros + meses inteiros
def main():
try:
Q_str = input("Digite a quantidade total de minério (Q), ex: 120000: ").strip()
r_str = input("Digite a taxa anual de exploração (r), ex: 15000: ").strip()
Q = float(Q_str.replace(',', '.'))
r = float(r_str.replace(',', '.'))
except Exception:
print("Entrada inválida. Use números (ex: 120000 ou 15000.0).")
return
if r <= 0.0:
print("Erro: a taxa anual de exploração (r) deve ser maior que zero.")
return
if Q < 0.0:
print("Erro: a quantidade total de minério (Q) não pode ser negativa.")
return
# Caso trivial
if Q == 0.0:
print("Vida útil: 0,00 anos (0,0 meses). Equivale a 0 anos e 0 meses.")
return
# Cálculo principal
t = Q / r # anos (pode ser fracionário)
m_total = 12.0 * t # meses (pode ser fracionário)
# Decomposição em anos inteiros e meses inteiros
anos_inteiros = int(t) # para t>=0, int() funciona como floor
meses_restantes = round((t - anos_inteiros) * 12)
# Ajuste se o arredondamento resultar em 12 meses
if meses_restantes == 12:
anos_inteiros += 1
meses_restantes = 0
# Impressão dos resultados
print()
print(f"Vida útil (anos, decimal): {t:.2f} anos")
print(f"Vida útil (meses, total): {m_total:.1f} meses")
print(f"Equivalente a: {anos_inteiros} anos e {meses_restantes} meses")
if __name__ == "__main__":
main()