2016-08-07 9 views
0

Программа работает, но я не могу понять, почему функция в третьем else оператор if не возвращает точное значение. Спасибо за помощь в
вперед.Else, если опция 3 не дает ответа ... что я сделал неправильно?

finaltemp = newtemp(t, choice); 

printf("\nThe converted temperature is: %f", finaltemp); 

return(0); 
} 

double newtemp(double a, double b) 
{ 
double result; 
if (b==1) 
    { 
    result = (a-(273.15)); 
    } 
if (b==2) 
    { 
    result = (a+(273.15)); 
    } 
if (b==3) 
    { 
    result = (((5/9)*(a))-32); 
    } 
if (b==4) 
    { 
    result = (((9/5)*(a))+32); 
    } 
if (b==5) 
    { 
    result = (((9/5)*(a))-459.67); 
    } 
if (b==6) 
    { 
    result = ((a+459.67)*(9/5)); 
    } 

return(result); 
} 
+1

Где находится "третье другое заявление"? Я не вижу 'else' в вашем опубликованном коде. – MikeCAT

+0

@MikeCAT Я не отформатировал его в сообщении правильно, так что «else» часть инструкции была отключена. В любом случае ошибка, которую я совершил, заключалась в использовании int division, а не в делении с плавающей запятой. Спасибо за ответ. –

ответ

3

Выполнение целочисленного деления, а не деления с плавающей запятой.

Выражение (5/9) делит два значения int, поэтому результат равен int, в частности 0. Вам необходимо использовать константы с плавающей запятой, чтобы заставить деление с плавающей запятой.

if (b==3) 
    { 
    result = (((5.0/9.0)*(a))-32); 
    } 
if (b==4) 
    { 
    result = (((9.0/5.0)*(a))+32); 
    } 
if (b==5) 
    { 
    result = (((9.0/5.0)*(a))-459.67); 
    } 
if (b==6) 
    { 
    result = ((a+459.67)*(9.0/5.0)); 
    } 
+0

Спасибо за это. Я действительно понял, что я делаю неправильно, глядя на него в течение 30 минут. Такой глупый надзор. Спасибо за объяснение, как хорошо! –