注册 登录
编程论坛 C++教室

自己编的求三角形面积并处理异常,请大家帮忙修改

niji 发布于 2011-12-12 19:30, 630 次点击
//求任意三角形面积
//要求输入三角形三边(实数),若三边能构成三角形,则计算面积,否则抛出异常,进行处理。
//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;
}
     
   
2 回复
#2
rjsp2011-12-13 10:59
p=1/2*(a+b+c);
下次干脆直接写成 p=0*(a+b+c);
#3
wj70720052011-12-16 14:52
恩,数据转换有点
1