2011-09-09 4 views
2

私はaXを解くようにしています + bX + c = 0しかし、私はそれが数学のヘッダーを使用して動作させるように見えません。 )。C++は数式でEを使用しています

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

私は真に驚いて、人々が思いつくアイデアを見るのに驚いています。もちろん、これはうまくいかないかもしれません。それがうまくいくと期待しています。 +1このアイデアを共有! –

答えて

7

std::sqrt<cmath>からの使用。また、(2 * a)と書かなければなりません。2aではありません。

もう1つのこと:2次方程式を解くためにテキストブックの式を使用しないでください。 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のように、浮動小数点定数を入力している場合にのみ機能します。指数関数を計算するには、<cmath>からstd::pow()を使用する必要があります。この場合、std::sqrt()を使用できます。

2

つまり、はありません。 how Eが動作します。

Eは、その後、あなたがsqrt機能を使用する必要があり、あなたは平方根を取りたい場合は番号科学的表記法(多かれ少なかれ)

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

を表現するために、浮動小数点リテラルに使用されています

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

もちろん、#include <cmath>を使用することはできませんので、自分でロールバックする必要があります。

+0

非常に良いアイデアだが、そのような機能をどうやって作るのだろうか?私たちはどこから始めたのですか? – user779444

+0

あなたの仕事は機能を書いていませんか?あなたにとってラッキーですが、アレクサンドルはあなたに答えを与えましたが、アイデアは自分で書く方法を見つけるか、少なくとも自分のものを探すことです。 Btw、すばらしいGoogle検索で私をここに連れて来ました[Wikipedia:平方根を計算する方法](http://en.wikipedia.org/wiki/Methods_of_computing_square_roots)ので、見つけにくいものではありません。 –

0

私はあなたが力を意味すると思いますが、C++にそのような力の演算子はありません。 pow関数か、適切な場合はsqrt関数を使用してください。しかし、これらはともに<cmath>にあります。 <cmath>(宿題?)を使用できない場合は、独自の平方根関数を実装する必要があります。

0

私は指数計算(sqrt(5) = 5^(1/2))と科学的表記(3.2E6 = 3.2 x 10^6)を混同していると思いますが、ここで私は^を「力の育成」に使用しています。残念なことに、C++にはCのように組み込みの演算子がありません。したがって、通常は数学ライブラリのsqrt(x)またはpow(x,0.5)のいずれかを使用します。

ただし、の計算ヘッダーなしで解くには、平方根を計算する別の方法を見つける必要があります。たとえば、Babylonian or Heron methodを使用するサブルーチンを書くことができます。

関連する問題