В вашем коде четыре ошибки.
1) Главное - понять, что компьютер делает все в том порядке, в котором вы его просите.Очевидно, правильный порядок: а) попросить пользователя ввести температуру; б) преобразовать ее в градусы Цельсия.Но ваш код делает это наоборот.Вот ваш код с некоторыми моими комментариями
// convert fahrenheit to celcius
int celsius = 5/9*(fahrenheit-32);
// ask user to enter fahrenheit temperature
cout << "Please enter Fahrenheit degrees: ";
cin >> fahrenheit ;
Надеюсь, теперь очевидно, что у вас все не так, как надо
2) Вторая ошибка в том, что вы выбрали неправильный тип для ваших переменных.Температура не является целым числом (например, нет ничего плохого в том, что температура составляет 80,5 градусов).Таким образом, вы должны выбрать тип с плавающей точкой для своих переменных, float
является одной из возможностей.
3) Третья ошибка довольно техническая, но важная для понимания.В своем уравнении вы написали 5/9
, и 5
, и 9
являются целыми числами, поэтому компьютер выполнит целочисленное деление , что означает любой математический результат деления, к которому собирается компьютеротбросить дробную часть результата, оставив целое число.Математически 5/9
равно 0.555555...
, а дробная часть оставляет 0
, поэтому ваше уравнение такое же, как 0*(fahrenheit-32)
, которое, очевидно, не даст правильного результата.Используйте 5.0/9.0
вместо 5/9
таким образом, вы получите деление с плавающей запятой .
4) Конечная ошибка довольно тривиальна
cout.precision(0); //two decimal for cents
Если вы хотите два десятичных знакаместами это должно быть
cout.precision(2);
Наконец, это не ошибка, но комментарии о деньгах неуместны в программе о температуре.
Вот версия вашего кода с исправленными этими ошибками
int main() {
cout.setf(ios::fixed); //no scientific notation
cout.setf(ios::showpoint); //show decimal point
cout.precision(2); //two decimal places
float fahrenheit;
cout << "Please enter Fahrenheit degrees: ";
cin >> fahrenheit;
float celsius = 5.0/9.0*(fahrenheit-32.0);
cout << "Celsius: " << celsius << endl;
return 0;
}
Я уверен, что вы удивлены тем, что в короткой программе может быть так много ошибок.Это просто подчеркивает, что вы должны быть осторожны и точны при написании кода.