2016-11-10 69 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; 
} 

此輸出噸和y變量楠。我對如何解決這個問題沒有想法。代碼僅僅是問題的例子,除了修復工具之外,不需要做其他任何事情。楠在C + +初學者

+5

負數的平方根是NAN。 – tkausl

+3

這裏的問題不是C++。這裏的問題是基本的數學。 –

+0

你怎麼看'的sqrt(POW(SIN(-2),2))/開方(-2 -4)'是一個浮點值?我相當肯定'float'不能代表'-0.321 * i' – CollinD

回答

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

在C++中,負數的平方根定義爲NAN,「不是數字」。由於變量x[-2, 2]範圍內迭代,所以您永遠不會有NAN,這意味着所有使用它的計算都會到達NAN。

如果您希望sqrt返回複數,則需要使用std::complex及其各種數學函數。

+0

謝謝!我的講師想讓我失敗。 – Sanyrual

1

你繼續在sqrt函數使用負數這不是可以解決的,只要。 (提示:x-4總是負數或零)