日期:2014-05-20  浏览次数:20767 次

C++小问题
#include<iostream>
#include<math.h>
using namespace std;
double edge(double x1,double x2,double y1,double y2)
{
double len;
len=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
return len;
}

void main()
{
double x1,x2,x3,y1,y2,y3,area=0,ab,ac,bc,s;
cout<<"input x="<<endl;
cin>>x1>>x2>>x3;
cout<<"input y="<<endl;
cin>>y1>>y2>>y3;
ab=edge(x1,x2,y1,y2);
bc=edge(x2,x3,y2,y3);
ac=edge(x1,x3,y1,y3);
s=(ab+bc+ac)/2;
area=sqrt(s*(s-ab)*(s-ac)*(s-bc));
cout<<"area="<<area<<endl;
}
是在visual studio 2008下写的,可是area得到的负数,请问大家哪里出问题了?

------解决方案--------------------
你的求长度的公式写错了(注意括号)

len=sqrt( (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) );
------解决方案--------------------
-1.#IND并不是一个负数,通常是无意义数学运算的结果,如出书为零,求负数的平方根等。