( 0.5 ) Anacleto tem 1.5 m e cresce 2 cm por ano, enquanto Adailton tem 1.10 m e cresce 3 cm por ano. Construa um programa em Python que calcule e imprima a altura de cada um ano a ano e quantos anos serão necessários para que Adailton seja maior que Anacleto.

Passo 1

O enunciado pede duas coisas:
  1. Construir um programa em Python que calcule e imprima a altura de cada um ano a ano.
  2. Determinar e imprimir quantos anos serão necessários para que Adailton seja maior que Anacleto.
Informações dadas (vou listar tudo que podemos usar diretamente):
  • Altura atual de Anacleto: 1,5 m.
  • Altura atual de Adailton: 1,10 m.
  • Crescimento anual de Anacleto: 2 cm por ano.
  • Crescimento anual de Adailton: 3 cm por ano.
Observação importante (dados para o programa): as unidades estão m e cm; para evitar confusão convém usar a mesma unidade ao calcular ano a ano.

Passo 2

Primeiro conceito que precisamos dominar (e que vou aplicar no programa): consistência de unidades. Não podemos somar diretamente metros com centímetros sem converter. Uma estratégia simples é trabalhar tudo em centímetros (inteiros), evitando floats desnecessários.
Como converter:
  • 1 m = 100 cm.
  • Portanto, 1,5 m = 1{,}5\times 100 = 150 cm.
  • E 1,10 m = 1{,}10\times 100 = 110 cm.
Vamos definir:
  • Anacleto inicial em cm: A_0 = 150 cm.
  • Adailton inicial em cm: D_0 = 110 cm.
  • Incrementos por ano: \Delta_A = 2 cm/ano e \Delta_D = 3 cm/ano.
Explicação didática: trabalhar em centímetros facilita atualizar as alturas com somas inteiras a cada ano; só na impressão podemos converter de volta para metros (dividindo por 100) para ficar mais legível.

Passo 3

Agora a lógica passo a passo do algoritmo (o que o programa precisa fazer):
  1. Inicializar as variáveis de altura em cm: A \leftarrow 150, D \leftarrow 110.
  2. Inicializar um contador de anos: n \leftarrow 0.
  3. Imprimir o estado do ano n (alturas atuais).
  4. Enquanto Adailton não for maior que Anacleto (isto é, enquanto D \le A):
    a. Incrementar n em 1.
    b. Atualizar alturas: A \leftarrow A + \Delta_A, D \leftarrow D + \Delta_D.
    c. Imprimir o estado do ano n.
  5. Quando o laço terminar, n será o número de anos necessários para que Adailton passe a ser maior que Anacleto.
Por que escolhi esse método e não só a conta direta? O enunciado pede que se imprima a altura ano a ano; isso implica um laço que mostre cada ano. Mesmo assim, vamos também fazer a conta algébrica curta para confirmar o resultado rapidamente (e para você aprender essa técnica).

Passo 4

Pequena aula de matemática rápida (atalho algébrico):
Queremos o menor n inteiro tal que
110 + 3n > 150 + 2n.
Subtraindo 2n dos dois lados e subtraindo 110:
n > 150 - 110,
n > 40.
Portanto o menor inteiro que satisfaz é n=41. Isso significa que, teoricamente, após 41 anos Adailton será maior que Anacleto. Observe que em n=40 eles ficam com a mesma altura (empate), pois
110 + 3\cdot 40 = 230,\qquad 150 + 2\cdot 40 = 230.
Essa conta é útil para checar o programa e para responder rápido numa prova, mas como o problema também pede imprimir ano a ano, seguimos com o laço.

Passo 5

Aqui está o programa em Python que implementa a lógica descrita. Ele imprime ano a ano as alturas (em metros, com duas casas decimais) e, ao final, informa quantos anos foram necessários para que Adailton fique maior que Anacleto.
# Programa: alturas ano a ano até Adailton > Anacleto

# alturas em centímetros para evitar floats desnecessários
anacleto_cm = 150   # 1,5 m = 150 cm
adailton_cm = 110   # 1,10 m = 110 cm

crescimento_anacleto = 2   # cm por ano
crescimento_adailton = 3   # cm por ano

ano = 0

# imprime cabeçalho
print(f"Ano\tAnacleto (m)\tAdailton (m)")
# imprime estado inicial (ano 0)
print(f"{ano}\t{anacleto_cm/100:.2f}\t\t{adailton_cm/100:.2f}")

# enquanto Adailton não for maior (<=), continua
while adailton_cm <= anacleto_cm:
    ano += 1
    anacleto_cm += crescimento_anacleto
    adailton_cm += crescimento_adailton
    print(f"{ano}\t{anacleto_cm/100:.2f}\t\t{adailton_cm/100:.2f}")

print()
print(f"Anos necessários para que Adailton seja maior que Anacleto: {ano}")
Dica prática para a prova: copie esse padrão de laço quando precisar simular evoluções ano a ano. Inicialize, imprima estado inicial (opcional), e repita atualizar+imprimir até a condição ser satisfeita.

Passo 6

Vamos rodar mentalmente (ou seguir a saída do programa) para ver alguns anos e confirmar o resultado algébrico. Vou mostrar os primeiros anos, depois pulo para os últimos para economizar espaço:
Estado inicial (ano 0):
  • Ano 0: Anacleto = 150 cm = 1,50 m; Adailton = 110 cm = 1,10 m.
Após 1 ano:
  • Ano 1: Anacleto = 152 cm = 1,52 m; Adailton = 113 cm = 1,13 m.
Após 2 anos:
  • Ano 2: Anacleto = 154 cm = 1,54 m; Adailton = 116 cm = 1,16 m.
Pulo para perto do empate:
  • Ano 39: Anacleto = 150 + 2\cdot 39 = 228 cm = 2,28 m; Adailton = 110 + 3\cdot 39 = 227 cm = 2,27 m (Adailton ainda menor).
  • Ano 40: Anacleto = 230 cm = 2,30 m; Adailton = 230 cm = 2,30 m (empate).
  • Ano 41: Anacleto = 232 cm = 2,32 m; Adailton = 233 cm = 2,33 m (Adailton passa a ser maior).
Isso confirma o cálculo algébrico: é preciso esperar 41 anos para que Adailton seja maior que Anacleto. O programa imprime exatamente a sequência ano a ano e termina quando encontra o ano onde Adailton fica maior.

Passo 7

Resumo final, encorajamento e dica de prova:
  • Resultado algébrico e por simulação concordam: serão necessários \,41, anos para Adailton passar Anacleto.
  • Na prova, se pedirem apenas o número de anos, a conta algébrica é rápida. Se pedirem a evolução ano a ano (ou pedirem um programa), use a técnica do laço ano a ano que mostrei.
  • Você consegue! Se ficar sem tempo na prova, faça a conta algébrica primeiro para garantir a resposta numérica e, se der tempo, apresente a simulação.

Resposta

# Programa: alturas ano a ano até Adailton > Anacleto

# alturas em centímetros para evitar floats desnecessários
anacleto_cm = 150   # 1,5 m = 150 cm
adailton_cm = 110   # 1,10 m = 110 cm

crescimento_anacleto = 2   # cm por ano
crescimento_adailton = 3   # cm por ano

ano = 0

# imprime cabeçalho
print(f"Ano\tAnacleto (m)\tAdailton (m)")
# imprime estado inicial (ano 0)
print(f"{ano}\t{anacleto_cm/100:.2f}\t\t{adailton_cm/100:.2f}")

# enquanto Adailton não for maior (<=), continua
while adailton_cm <= anacleto_cm:
    ano += 1
    anacleto_cm += crescimento_anacleto
    adailton_cm += crescimento_adailton
    print(f"{ano}\t{anacleto_cm/100:.2f}\t\t{adailton_cm/100:.2f}")

print()
print(f"Anos necessários para que Adailton seja maior que Anacleto: {ano}")
41 anos

Exercícios relacionados