2016-11-10 12 views
0
#include <iostream> 
#include <conio.h> 
#include <math.h> 

using namespace std; 

int main() 
{ 
    float xstart = -2, xfinal = 2, h = 0.5; 
    float t, y; 

    cout << "X start = -2" << endl; 
    cout << "X final = 2" << endl; 
    cout << "step = 0.5" << endl << endl; 

    for (float x = xstart; x <= xfinal; x+= h) 
    { 
     t= sqrt(pow(sin(x),2))/sqrt(x - 4); 
     y= sqrt(2 * t + x); 

     cout << x << " | " << t << " | " << y << endl; 
    } 

    cout << endl; 
} 

これはtとy変数をnanとして出力します。私はそれを修正する方法のアイデアがありません。コードは問題の一例に過ぎず、修正ナンバー以外は何もする必要はありません。初心者のためのC++ ++

+5

負数の平方根はNANです。 – tkausl

+3

ここでの問題はC++ではありません。ここでの問題は、基本的な数学です。 –

+0

'sqrt(pow(sin(-2)、2))/ sqrt(-2 -4)'は浮動小数点として何と思いますか? 'float'は' -0.321 * i'を表すことができないと確信しています – CollinD

答えて

2
t= sqrt(pow(sin(x),2))/sqrt(x - 4); 

は、負の数の平方根を「非数」、NANとして定義されます。変数x[-2, 2]の範囲で反復するので、決してこれをNANにすることはできません。つまり、それを使用するすべての計算がNANに到着します。

sqrtが複素数を返すと予想される場合は、std::complexとそのさまざまな数学関数を使用する必要があります。

+0

ありがとう!私の講師は、私をひどく失敗させたいと思っています。 – Sanyrual

1

sqrt関数で引き続き負の数を使用している限り修正することはできません。 (ヒント:X - 4は常に負またはゼロ)C++では