2016-11-10 67 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总是负数或零)