(2) Para converter uma temperatura registrada em graus Celsius para graus Fahrenheit basta utilizar a seguinte fórmula:
. 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:
Exemplo 2:
Exemplo de entrada:
Digite a temperatura: 77
Digite a unidade: celsius
Exemplo de saída:
Temperatura convertida:
Digite a temperatura: 25.1
Digite a unidade: fahrenheit
Digite a temperatura: 77
Digite a unidade: celsius
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:
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
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:- Declarar variáveis
double temp;
echar unidade[20];
- Ler usando
scanf("%lf", &temp);
escanf("%s", unidade);
- Comparar
unidade
com"fahrenheit"
ou"celsius"
usandostrcmp
. - Se for
"fahrenheit"
, chamamoscelsiusParaFahrenheit(temp)
;
se for"celsius"
, chamamosfahrenheitParaCelsius(temp)
;
senão, imprimimosERRO
. - 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.