(2) Para converter uma temperatura registrada em graus Celsius para graus Fahrenheit basta utilizar a seguinte fórmula: ^circ F= ^circ C times 1,8+32. Faça duas funções, uma para converter graus Celsius para graus Fahrenheit, e outra para converter o inverso. Cada função deve receber a temperatura como parâmetro e retornar a temperatura convertida. Utilize essas funções na função main, que deverá receber a temperatura e a unidade para qual a temperatura deve ser convertida. Depois de utilizada a função correta, deverá mostrar na tela a temperatura convertida. OBS: Caso seja fornecida uma unidade inválida, o programa deverá exibir a palavra ERRO como resposta.

Exemplo 1:

Exemplo de entrada:
Digite a temperatura: 25.1
Digite a unidade: fahrenheit

Exemplo de saída:

Temperatura convertida: 77.18^circ F

Exemplo 2:

Exemplo de entrada:
Digite a temperatura: 77
Digite a unidade: celsius

Exemplo de saída:

Temperatura convertida: 25^circ C

Passo 1

Beleza, o enunciado pede pra gente criar duas funções: uma que converte de Celsius pra Fahrenheit e outra que faz o inverso. Aí, na função main, a gente lê uma temperatura e a unidade alvo (“celsius” ou “fahrenheit”), chama a função certa, imprime o resultado e, se a unidade não for nenhuma das duas, exibe “ERRO”. O conteúdo é: funções em C, condicionais e a fórmula de conversão de temperatura.

Passo 2

Primeiro vamos lembrar a fórmula de Celsius para Fahrenheit. É uma relação linear:
^circ F = ^circ C times 1,8 + 32
Isso significa que, se você tem graus Celsius, multiplica por 1,8 e soma 32 pra achar . Aí é só colocar isso numa função assim:
double celsiusParaFahrenheit(double c) {
    return c * 1.8 + 32;
}

Passo 3

Agora o inverso: queremos achar ^circ C = ^circ F - 321,8 a partir de . A gente isola na fórmula:
Que vira a nossa função:
double fahrenheitParaCelsius(double f) {
    return (f - 32) / 1.8;
}

Passo 4

Na main vamos:
  1. Declarar variáveis double temp; e char unidade[20];
  2. Ler usando scanf("%lf", &temp); e scanf("%s", unidade);
  3. Comparar unidade com "fahrenheit" ou "celsius" usando strcmp.
  4. Se for "fahrenheit", chamamos celsiusParaFahrenheit(temp);
    se for "celsius", chamamos fahrenheitParaCelsius(temp);
    senão, imprimimos ERRO.
  5. Exibir o valor convertido com duas casas decimais e o símbolo correto.

Passo 5

Montando tudo junto, ficaria assim em C:
#include <stdio.h>
#include <string.h>

double celsiusParaFahrenheit(double c) {
    return c * 1.8 + 32;
}

double fahrenheitParaCelsius(double f) {
    return (f - 32) / 1.8;
}

int main() {
    double temp;
    char unidade[20];

    printf("Digite a temperatura: ");
    scanf("%lf", &temp);

    printf("Digite a unidade: ");
    scanf("%s", unidade);

    if (strcmp(unidade, "fahrenheit") == 0) {
        double res = celsiusParaFahrenheit(temp);
        printf("Temperatura convertida: $%.2f^{\\circ}F$\n", res);
    }
    else if (strcmp(unidade, "celsius") == 0) {
        double res = fahrenheitParaCelsius(temp);
        printf("Temperatura convertida: $%.2f^{\\circ}C$\n", res);
    }
    else {
        printf("ERRO\n");
    }

    return 0;
}

Resposta

O código acima resolve o problema criando duas funções de conversão, tratando a entrada na main, chamando a função certa e exibindo o resultado formatado.

Exercícios relacionados