Ваша проблема в том, что вы пытаетесь сравнить значение температуры с исходным именем переменной, чтобы определить, является ли оно значением по Фаренгейту или Цельсию.
if (temperature = f)
...
else if (temperature = c))
Вам следует выбрать один тип температуры, а не другойвсегда сохраняйте значение как и преобразуйте для другого при необходимости.В этом примере используется градус Цельсия.
void set_celsius(double c)
{
temperature = c;
}
void set_fahrenheit(double f)
{
temperature = (5.0/9.0)(f - 32);
}
То же самое можно сделать с вашим геттером для Фаренгейта.Ваш метод конвертации действительно не нужен (и не называется atm).
EDIT
Вы также должны использовать математические операции с плавающей запятой, так как целочисленная математика будет усечена до0, так как значение, которое вы ищете, является десятичным, 0,5555 ...
Сохранение значения в качестве одной из требуемых температур сэкономит на вычислениях, когда этот тип температуры необходим.В этом коде ничего не изменится, но при масштабировании программного обеспечения важно исключить чрезмерную обработку.