自己编的求三角形面积并处理异常,请大家帮忙修改
//求任意三角形面积//要求输入三角形三边(实数),若三边能构成三角形,则计算面积,否则抛出异常,进行处理。
//p=1/2*(a+b+c)
//s=sqrt(p*(p-a)*(p-b)*(p-c))
#include<iostream>
#include<cmath>
using namespace std;
class triangle
{
public:
triangle(double x,double y,double z);
double getarea();
private:
double a,b,c;
double p,s;
};
triangle::triangle(double x,double y,double z)
{
a=x;
b=y;
c=z;
if(a+b<=c||a+c<=b||b+c<=a)
throw "不能构成三角形!";
}
double triangle::getarea()
{
p=1/2*(a+b+c);
s=sqrt(p*(p-a)*(p-b)*(p-c));
return s; //这部分好像也没错呀 自己检查不出
}
int main()
{
double x,y,z;
cout<<"请输入三角形三条边的长度:";
cin>>x>>y>>z;
triangle t(x,y,z);
try
{
cout<<"三角形面积为:"<<t.getarea(); //最后计算结果总是-0 不知道怎么回事
}catch(char *str)
{
cout<<str<<"(两边之和必须大于第三条边)"<<endl;
}
system("pause");
return 0;
}