Faça um programa que receba na mesma linha de entrada um número real e dois caracteres dentre os valores C, F e K (onde C = Graus Celsius, F = Graus Fahrenheit e K = Kelvin). Seu programa deverá converter o valor numérico de uma escala de temperatura para outra. Observe os exemplos a seguir:

Exemplo 1:

Escalas de temperatura: K = Kelvin, F = Fahrenheit e C = Celsius
Digite a temperatura, a escala da temperatura e a escala para conversão: 100 C K
100 }\mp@subsup{}{}{\circ}\textrm{C = 373.15K

Exemplo 2:

Escalas de temperatura: K = Kelvin, F = Fahrenheit e C = Celsius
Digite a temperatura, a escala da temperatura e a escala para conversão: 56.45 K F
56.45 \mathrm{~K}=-358.06^{\circ} \mathrm{F}

Passo 1

O enunciado pede que façamos um programa que leia, na mesma linha, três itens: (1) um número real representando uma temperatura, (2) um caractere que identifica a escala atual dessa temperatura e (3) um caractere que identifica a escala para a qual queremos converter. As escalas possíveis são C (Celsius), F (Fahrenheit) e K (Kelvin). O programa deve imprimir a temperatura original seguida do símbolo da escala e o resultado convertido seguido do símbolo da escala de destino. Exemplo de entrada e saída fornecidos no enunciado (eu os anotei para usar como teste):
  • Entrada: 100 C K -> Saída esperada (do enunciado): 100 °C = 373.15K
  • Entrada: 56.45 K F -> Saída esperada (do enunciado): 56.45 K = -358.06°F
Informações relevantes dadas:
  • A entrada vem em uma única linha com três tokens: um número real e duas letras entre \{C,F,K\}.
  • Deve-se converter a temperatura da escala inicial para a escala final e imprimir no formato mostrado.

Passo 2

Vamos fixar as fórmulas fundamentais de conversão entre as escalas. Vou apresentar cada fórmula e explicar o que cada símbolo significa.
  • Conversão entre Celsius e Kelvin:
    K = C + 273{,}15
    Aqui \,C é a temperatura em graus Celsius e \,K é a temperatura em Kelvin. A constante 273{,}15 é a diferença entre as escalas de zero absoluto.
    A inversa é:
    C = K - 273{,}15
  • Conversão entre Celsius e Fahrenheit:
    F = C \cdot \frac{9}{5} + 32
    Aqui \,C é Celsius e \,F é Fahrenheit. A razão \frac{9}{5} (ou 1{,}8) escala a unidade e +32 desloca a origem.
    A inversa é:
    C = (F - 32) \cdot \frac{5}{9}
Observação prática: para converter entre duas escalas quaisquer, a forma mais simples e segura é converter primeiro para \,C (Celsius) usando as fórmulas acima, e depois converter de \,C para a escala desejada. Isso evita ter que memorizar 6 fórmulas diretas (uma para cada par).

Passo 3

Vou escrever explicitamente o procedimento matemático que o programa seguirá (passo a passo numérico), usando a estratégia “pivô em Celsius”.
Dado: valor numérico \,T, escala de origem S_{\text{orig}} e escala de destino S_{\text{dest}}.
  1. Calcular \,C (temperatura em Celsius) a partir de \,T conforme S_{\text{orig}}:
    • Se S_{\text{orig}} = C, então C = T.
    • Se S_{\text{orig}} = K, então C = T - 273{,}15.
    • Se S_{\text{orig}} = F, então C = (T - 32) \cdot \frac{5}{9}.
  2. Converter de \,C para a escala destino S_{\text{dest}}:
    • Se S_{\text{dest}} = C, então T_{\text{out}} = C.
    • Se S_{\text{dest}} = K, então T_{\text{out}} = C + 273{,}15.
    • Se S_{\text{dest}} = F, então T_{\text{out}} = C \cdot \frac{9}{5} + 32.
Esses dois passos cobrem todas as conversões possíveis.

Passo 4

Pontos de implementação e detalhes práticos (o que prestar atenção ao escrever o programa):
  • Normalizar letras: aceitar entrada em minúsculas ou maiúsculas transformando os caracteres para maiúsculo.
  • Se a escala de origem for igual à de destino, apenas imprimir o valor sem alterar (apenas formatar).
  • Precisão: nas saídas do exemplo os valores aparecem com duas casas decimais (por exemplo -358{,}06). Então formatamos o resultado com duas casas decimais usando arredondamento padrão.
  • Símbolos: em impressões, as escalas C e F normalmente aparecem com o símbolo de grau \,^\circ antes da letra ( ^{\circ}\mathrm{C}, ^{\circ}\mathrm{F}), enquanto K (Kelvin) não usa o símbolo de grau. No programa usaremos o caractere Unicode \u00B0 para o símbolo de grau quando necessário.
  • Preservar a representação do valor de entrada na parte esquerda da saída: para ficar igual aos exemplos, imprimimos o token original lido para o valor (assim 100 fica 100, 56.45 fica 56.45), e o resultado convertido formatamos com duas casas decimais.

Passo 5

Escrevendo o algoritmo em pseudo-passos (fácil de transformar em código):
  1. Ler a linha de entrada e dividir em três tokens: valor_str, esc_origem, esc_destino.
  2. Converter valor = float(valor_str).
  3. esc_origem = esc_origem.upper() e esc_destino = esc_destino.upper().
  4. Calcular celsius assim:
    • se esc_origem == 'C': celsius = valor
    • se esc_origem == 'K': celsius = valor - 273.15
    • se esc_origem == 'F': celsius = (valor - 32) * 5/9
  5. Calcular resultado assim:
    • se esc_destino == 'C': resultado = celsius
    • se esc_destino == 'K': resultado = celsius + 273.15
    • se esc_destino == 'F': resultado = celsius * 9/5 + 32
  6. Preparar strings de unidades para imprimir: adicionar o símbolo de grau a C e F.
  7. Imprimir na forma: <valor_str> <unidade_origem> = <resultado_formatado><unidade_destino>, com <resultado_formatado> com duas casas decimais.

Passo 6

Vou demonstrar manualmente com os exemplos para você entender as contas:
Exemplo 1: converter \,100 de \,C para \,K.
  • Origem: S_{\text{orig}} = C, então \,C = 100.
  • Destino: S_{\text{dest}} = K, então T_{\text{out}} = C + 273{,}15 = 100 + 273{,}15 = 373{,}15.
  • Resultado: 100 °C = 373.15K.
Exemplo 2: converter \,56{,}45 de \,K para \,F.
  • Origem: S_{\text{orig}} = K, então C = 56{,}45 - 273{,}15 = -216{,}70.
  • Destino: S_{\text{dest}} = F, então T_{\text{out}} = C \cdot \frac{9}{5} + 32 = -216{,}70 \cdot 1{,}8 + 32 = -390{,}06 + 32 = -358{,}06.
  • Resultado: 56.45 K = -358.06°F.
Percebeu como usamos primeiro a passagem por Celsius e depois a fórmula para a escala final? Isso simplifica muito.

Passo 7

Erros comuns e como evitá-los:
  • Esquecer de subtrair 273{,}15 ao ir de Kelvin para Celsius — isso gera desvios grandes.
  • Trocar a ordem de \frac{9}{5} e \frac{5}{9} na fórmula entre Celsius e Fahrenheit — preste atenção em qual direção está convertendo.
  • Usar arredondamento inadequado: o enunciado mostra duas casas decimais nos exemplos; o programa seguirá esse padrão para a saída convertida.
  • Lidar com entradas em minúsculas: por isso normalizamos com .upper().

Passo 8

Agora que já explicamos a lógica, seguem o programa pronto em Python. Ele implementa exatamente os passos acima: lê a linha, converte, formata e imprime no formato pedido. Copie e rode no seu computador ou no ambiente de prova que aceite Python 3.

Resposta

# Programa de conversão entre escalas C, F e K
# Lê: valor escala_origem escala_destino (na mesma linha)

linha = input().strip().split()
valor_str = linha[0]
valor = float(valor_str)
esc_origem = linha[1].upper()
esc_destino = linha[2].upper()

# converte para Celsius (pivô)
if esc_origem == 'C':
    celsius = valor
elif esc_origem == 'K':
    celsius = valor - 273.15
elif esc_origem == 'F':
    celsius = (valor - 32) * 5.0/9.0
else:
    raise ValueError("Escala de origem inválida")

# converte de Celsius para escala destino
if esc_destino == 'C':
    resultado = celsius
elif esc_destino == 'K':
    resultado = celsius + 273.15
elif esc_destino == 'F':
    resultado = celsius * 9.0/5.0 + 32
else:
    raise ValueError("Escala de destino inválida")

# símbolos: ° para C e F; K sem °
grau = '\u00B0'
unidad_origem = (grau + esc_origem) if esc_origem in ('C','F') else esc_origem
unidad_destino = (grau + esc_destino) if esc_destino in ('C','F') else esc_destino

# imprimir: mantém a string original do valor à esquerda e mostra o resultado com 2 casas decimais
print(f"{valor_str} {unidad_origem} = {resultado:.2f}{unidad_destino}")

Exercícios relacionados