2014-10-04 90 views
-5

有下面所寫的數學表達式的一個問題:收件C++中的數學表達式

mathematical expression

cin >> value; 

dividend = tan(fabs(2*value*value + 5 * value - 31.15)) 
    + log(fabs(value*value - 2.5))/log(5.0); 

divider = pow(fabs(pow(sin(value*value*value), 2) 
    + fabs(0.33*(log(fabs(value*value - 2.5)/log(5.0))))), 1/5.0); 

result = dividend/divider; 

結果是一個無效值。可能是什麼問題呢?

+1

你是什麼意思的「無效值」? – 2014-10-04 19:00:54

+0

它與PEMDAS有關。 – Chantola 2014-10-04 19:00:58

+4

將其分解爲更多的語句,以便您可以更輕鬆地查看發生的情況,在開始時設置斷點,然後使用調試器逐步完成。你已經很難閱讀,這就是爲什麼你不能發現問題。 – 2014-10-04 19:03:29

回答

2

儘管分母的平衡括號或divider(如果您願意),但它們放置不正確。正如Yves Daoust所說,你錯位log(5.0)

間距出在不同的行子表達式,並加括號應該幫你看看這個:

pow(
    fabs(
      pow(sin(value*value*value), 2) 
      + fabs(
        0.33 * ( 
          log(fabs(value*value - 2.5)/log(5.0)) 
         ) 
       ) 
     ) 
, 1/5.0); 

另外,爲什麼0.33代表三分之一,除非你真的隨便約精度?除以3將是便攜式...