#include <iostream>
#include <iomanip> // For fixed and setprecision
using namespace std;
namespace CelsiusSpace {
double ConvertToKelvin(double celsius) {
if (celsius < -273.15) {
cout << "Error!" << endl;
return -1;
}
return celsius + 273.15;
}
}
namespace FahrenheitSpace {
double ConvertToKelvin(double fahrenheit) {
if (fahrenheit < -459.67) {
cout << "Error!" << endl;
return -1;
}
return (5.0 / 9) * (fahrenheit - 32) + 273.15;
}
}
int main() {
double tempC, tempF;
cout<< "Input:" << endl;
cout << "Enter temperature in Celsius: ";
cin >> tempC;
cout << "Enter temperature in Fahrenheit: ";
cin >> tempF;
double kelvinFromCelsius = CelsiusSpace::ConvertToKelvin(tempC);
double kelvinFromFahrenheit = FahrenheitSpace::ConvertToKelvin(tempF);
cout<< "Output:" << endl;
// Handle invalid temperatures
if (kelvinFromCelsius < 0 || kelvinFromFahrenheit < 0) {
cout << "Invalid input detected. Exiting program." << endl;
return 1;
}
cout << fixed << setprecision(2);
cout << "\nTemperature in Kelvin from Celsius input: " << kelvinFromCelsius << " K" << endl;
cout << "Temperature in Kelvin from Fahrenheit input: " << kelvinFromFahrenheit << " K" << endl;
if (kelvinFromCelsius > kelvinFromFahrenheit) {
cout << "The Celsius temperature is hotter in Kelvin scale." << endl;
} else if (kelvinFromFahrenheit > kelvinFromCelsius) {
cout << "The Fahrenheit temperature is hotter in Kelvin scale." << endl;
} else {
cout << "Both temperatures are equal in Kelvin." << endl;
}
return 0;
}