2011-09-09 18 views
2

我試圖解決aX + bX + c = 0但我似乎無法使用數學頭(我不應該使用它)。在數學公式中使用E的C++

printf("%E",(-b+(b*b-4*a*c)E0.5)/2a); 
+4

我必須說我真的很驚訝,並且感到困惑,看到人們想出的想法 - 當然這不起作用,但有人可能會很以及預計它的工作。 +1分享這個想法! –

回答

7

使用std::sqrt從標頭<cmath>。此外,您必須編寫(2 * a),而不是2a

另一件事:不要使用教科書公式求解二次方程。使用the method described there

如果你不能使用數學頭,那麼你必須實現平方根例如。描述there

double my_abs(double x) 
{ 
    return x > 0 ? x : -x; 
} 

double my_sqrt(double x) 
{ 
    static const double eps = 1e-12; 
    double u = x, uold; 

    do { uold = u; u = (u * u + x)/(2 * u); } 
    while (my_abs(u - uold) < eps * x); 

    return u; 
} 
+0

雖然有趣的事情 - 他*不能*使用''。 –

+0

*不應該*不同於*不能* ...氣味像家庭作業,但他可以滾動自己的循環,並得到一個近似的平方根,如果他必須。 – AJG85

+0

除了stdio.h之外,不能包含任何東西 – user779444

0

E只有當你輸入了一個常量浮點,像2.2E6工作。要計算指數,需要使用std::pow()<cmath>。在這種情況下,您可以使用std::sqrt()

2

那就是根本不是E如何工作。

E在浮點文字使用的,表達了一些科學記數法(或多或少)

// x will be the same as 0.00104 
double x = 1.04e-3 

如果你想利用平方根,那麼你應該使用sqrt功能:

sqrt(-b+(b*b-4*a*c))/2/a 

當然,因爲你不能使用#include <cmath>,你必須自己推出!

+0

非常好的想法,但我該如何做出這樣的功能?我們馬上回到了我們開始的地方 – user779444

+0

不會寫這個功能是你的工作嗎?幸運的是,亞力山大給了你答案,但這個想法是你找到一種方法來自己寫一個,或者至少自己找一個。順便說一句,一個快速的谷歌搜索帶來了我[維基百科:計算平方根的方法](http://en.wikipedia.org/wiki/Methods_of_computing_square_roots),所以它不像是很難找到的東西。 –

0

我想用E表示功率,但在C++中沒有這樣的功率運算符。使用pow函數或者,在你的情況下更合適的,sqrt函數。但這些都在<cmath>。如果你不能使用<cmath>(家庭作業?),你可能必須實現自己的平方根函數。

0

我覺得你很迷惑科學記數法(3.2E6 = 3.2 x 10^6)與求冪(sqrt(5) = 5^(1/2)),其中我使用^來「提高權力」。不幸的是,與C一樣,C++沒有內置的電源操作符。所以您通常會使用數學庫中的sqrt(x)pow(x,0.5)

但是,如果你想解決這個沒有數學頭,你必須找到一種不同的方法來計算平方根。你可以寫一個子程序來使用Babylonian or Heron method,例如...