Escrever um programa que leia um peso na Terra e o número de um planeta e imprima o valor do seu peso neste planeta. A relação de planetas e dada a seguir juntamente com o valor das gravidades relativas à Terra:
Gravidade Relativa
Planeta
1
0,37
Mercúrio
2
0,88
Vênus
3
0,38
Marte
4
2,64
Júpiter
5
1,15
Saturno
6
1,17
Urano
Para calcular o peso no planeta use a fórmula: Pplaneta=Pterra/10*gravidade.
|
|
Gravidade Relativa | Planeta |
| 1 | 0,37 | Mercúrio |
| 2 | 0,88 | Vênus |
| 3 | 0,38 | Marte |
| 4 | 2,64 | Júpiter |
| 5 | 1,15 | Saturno |
| 6 | 1,17 | Urano |
Passo 1
O enunciado pede que a gente escreva um programa que leia um peso na Terra e o número de um planeta (da lista dada) e imprima o peso equivalente nesse planeta. As perguntas que o enunciado faz são: ler os dados de entrada (peso e número do planeta) e calcular/imprimir o peso no planeta escolhido.
Informações relevantes que o enunciado deu (peguei os valores diretamente da tabela do enunciado):
do planeta vai de
até
. As gravidades relativas (em relação à Terra) são:
1:
(Mercúrio)
2:
(Vênus)
3:
(Marte)
4:
(Júpiter)
5:
(Saturno)
6:
(Urano)
A fórmula a usar fornecida no enunciado é:
Informações relevantes que o enunciado deu (peguei os valores diretamente da tabela do enunciado):
A fórmula a usar fornecida no enunciado é:
Passo 2
Entendendo a fórmula e as variáveis passo a passo:
-
é o peso fornecido na Terra (entrada do programa). -
é o valor da coluna “Gravidade Relativa” para o planeta escolhido (da tabela acima). - A operação
corresponde a dividir por — o enunciado fez isso provavelmente para adotar unidades específicas (mas trate como parte da fórmula). - Depois multiplicamos pelo fator de gravidade para obter
.
Exemplo numérico pequeno (para fixar): see escolhermos o planeta (Júpiter, gravidade ), então
Isso significa que o programa deve imprimir
(ou equivalente formatado).
Passo 3
Escolha do método de implementação (por que e como):
- O enunciado não exige linguagem ou método específico, então escolho uma solução simples e robusta que funciona em provas e em juízes automáticos: armazenar os fatores de gravidade em uma lista/array indexada pelo número do planeta e usar esse valor para calcular o peso.
- Alternativa possível: usar um conjunto de if/elif (switch). A lista é mais limpa e permite indexar diretamente com o número do planeta.
- Também devo tratar entradas inválidas (por exemplo, número do planeta fora de
a ) e eventualmente aceitar que o número decimal na entrada possa usar vírgula (o enunciado usa vírgula nos números), então vou converter vírgulas para ponto quando necessário.
Passo 4
Estrutura do programa (pseudocódigo explicado passo a passo):
- Ler toda a entrada (pode vir em uma linha ou em linhas separadas).
- Extrair o primeiro token como
(converter para número real). Se o token usar vírgula decimal, substituir por ponto. - Extrair o segundo token como o número do planeta (converter para inteiro).
- Preparar uma lista de gravidades onde a posição
contém a gravidade do planeta . Vou usar índice começando em e colocar um valor dummy na posição . - Verificar se o número do planeta está entre
e . Se não estiver, imprimir uma mensagem de erro ou tratar conforme o requerido (aqui imprimiremos “Planeta inválido”). - Se válido, calcular
- Imprimir o resultado. Em provas/juízes costuma-se formatar com duas casas decimais; vou formatar assim por segurança (ex.:
).
Passo 5
Dicas didáticas sobre tipos e formatação (para você na hora da prova):
- Use número real (float) para
, porque o peso pode ter casas decimais. - Use inteiro (int) para o número do planeta.
- Para evitar problema com vírgula decimal na entrada, substitua
','por'.'antes de converter para float. - Ao imprimir, usar formatação para fixar casas decimais: em muitas linguagens
printf("%.2f", valor)(C),System.out.printf("%.2f", valor)(Java), ouprint("{:.2f}".format(valor))(Python). Isso facilita leitura e comparecimento com gabaritos que esperam duas casas.
Passo 6
Exemplo completo de execução manual para fixar o raciocínio:
Entrada (do usuário): e planeta
(Saturno, gravidade
).
Cálculo:
Entrada (do usuário):
Cálculo:
Saída esperada:
9.20 (ou 9,20 dependendo de como você formatar, mas em programação geralmente usa-se ponto decimal).Passo 7
Observações sobre casos-limite e boas práticas:
- Se o número do planeta estiver fora de
a , o programa deve avisar ou não calcular (no código abaixo eu uso uma mensagem “Planeta inválido”). - Se
for negativo, matematicamente o cálculo funciona (vai resultar em negativo), mas faça validação se o enunciado exigir somente pesos positivos. - Não usar prompts (como
input("Digite ...")) se o exercício for para juízes automáticos — apenas leia da entrada padrão.
Passo 8
Agora, a implementação pronta em Python (simples, curta e robusta). Esse é o programa final que cumpre o enunciado: lê o peso e o número do planeta, aplica a fórmula e imprime o peso no planeta (formatado com duas casas decimais).
Resposta
import sys
tokens = sys.stdin.read().strip().split()
if not tokens:
sys.exit()
if not tokens:
sys.exit()
Lê peso na Terra (aceita vírgula ou ponto como separador decimal)
peso_terra_str = tokens[0].replace(’,’, ‘.’)
try:
peso_terra = float(peso_terra_str)
except ValueError:
print(“Entrada de peso inválida”)
sys.exit()
try:
peso_terra = float(peso_terra_str)
except ValueError:
print(“Entrada de peso inválida”)
sys.exit()
Lê número do planeta (se não houver segundo token, tenta ler do input restante)
if len(tokens) >= 2:
try:
planeta = int(tokens[1])
except ValueError:
print(“Número de planeta inválido”)
sys.exit()
else:
try:
planeta = int(input().strip())
except:
print(“Número de planeta inválido”)
sys.exit()
try:
planeta = int(tokens[1])
except ValueError:
print(“Número de planeta inválido”)
sys.exit()
else:
try:
planeta = int(input().strip())
except:
print(“Número de planeta inválido”)
sys.exit()
Gravidades relativas (peguei os valores da tabela do enunciado)
gravidades = [0.0, 0.37, 0.88, 0.38, 2.64, 1.15, 1.17] # índice 1…6
if 1 <= planeta <= 6:
peso_planeta = (peso_terra / 10.0) * gravidades[planeta]
print("{:.2f}".format(peso_planeta))
else:
print(“Planeta inválido”)
peso_planeta = (peso_terra / 10.0) * gravidades[planeta]
print("{:.2f}".format(peso_planeta))
else:
print(“Planeta inválido”)