Este conversor de temperatura permite al usuario ingresar una cantidad y una unidad de medida en grados Celsius (ºC), Fahrenheit (ºF) o Kelvin (ºK). Posteriormente, convierte esta cantidad a las dos unidades de temperatura restantes.

Para realizar estas conversiones, el programa define seis funciones: celsiusToFahrenheit, celsiusToKelvin, fahrenheitToCelsius, fahrenheitToKelvin, kelvinToCelsius y kelvinToFahrenheit. Cada función toma una cantidad en una unidad de temperatura y la convierte a otra unidad de temperatura, utilizando para ello, una fórmula matemática específica.

#include <iostream>
#include <string>

using namespace std;

double celsiusToFahrenheit(double celsius) {
    return (celsius * 9 / 5) + 32;
}

double celsiusToKelvin(double celsius) {
    return celsius + 273.15;
}

double fahrenheitToCelsius(double fahrenheit) {
    return (fahrenheit - 32) * 5 / 9;
}

double fahrenheitToKelvin(double fahrenheit) {
    return (fahrenheit + 459.67) * 5 / 9;
}

double kelvinToCelsius(double kelvin) {
    return kelvin - 273.15;
}

double kelvinToFahrenheit(double kelvin) {
    return (kelvin * 9 / 5) - 459.67;
}

int main() {
    double value;
    char unit;

    cout << "Introduce la cantidad a convertir (ejemplo 20ºC, 20C, 20 c): ";
    cin >> value >> unit;

    if (unit == 'C' || unit == 'c' || unit == 'º') {
        cout << value << "ºC son " << celsiusToFahrenheit(value) << "ºF" << endl;
        cout << value << "ºC son " << celsiusToKelvin(value) << "ºK" << endl;
    } else if (unit == 'F' || unit == 'f') {
        cout << value << "ºF son " << fahrenheitToCelsius(value) << "ºC" << endl;
        cout << value << "ºF son " << fahrenheitToKelvin(value) << "ºK" << endl;
    } else if (unit == 'K' || unit == 'k') {
        cout << value << "ºK son " << kelvinToCelsius(value) << "ºC" << endl;
        cout << value << "ºK son " << kelvinToFahrenheit(value) << "ºF" << endl;
    } else {
        cout << "Unidad de grados no reconocida. Por favor introduce C, c, ºC, F, f, ºF, K, k o ºK." << endl;
    }

    return 0;
}

El programa consiste en lo siguiente: En la función principal (main), se declaran dos variables: una de tipo double llamada 'value' y una de tipo char llamada 'unit'. Una variable de tipo double almacena números decimales y una variable de tipo char almacena un solo carácter, puede ser una letra, un número o un signo de puntuación.

Luego el programa solicita al usuario una cantidad de temperatura junto con una letra que representa la unidad de medida, por ejemplo, 20ºC. El valor numérico 20 se guarda en la variable 'value' y el carácter de la unidad de medida c, C o ºC se guarda en la variable 'unit'.

A continuación, el programa utiliza una serie de declaraciones 'if' y 'if else' para determinar la unidad de medida correspondiente a la variable 'unit'. Cuando se encuentra la unidad de medida correspondiente, se llama a la función correspondiente y se realiza la operación matemática necesaria para convertir la temperatura a las otras dos unidades de medida. Finalmente, el resultado se imprime en la consola.

El código ha sido probado en Code::Blocks en Windows, por lo que es completamente funcional.

NOTA: Si al correr el programa los acentos o caracteres especiales no se muestran correctamente, puedes usar esta solución: ¿Cómo mostrar acentos y caracteres especiales en programas escritos en C++?

Código cortesía de: Circuitoselectronicos.org