发新话题
打印

对三角形的处理

对三角形的处理

#include<iostream.h>
#include<math.h>
float a,b,c;
class Triangle{
private:
     float x,y,z;//三角形的三条边
public:
     Triangle ( float a,  float b,float c)  //构造函数,确定三角形
  {
   cout<<"请依次输入三角形的三条边的长度:"<<endl;
         cout<<"a=";
             cin>>a;x=a;
         cout<<"b=";
             cin>>b;y=b;
         cout<<"c=";
             cin>>c;z=c;
  }
  //void set_values (float a, float b,float c) { x=a; y=b;z=c;},也可以用这个代替构造函数
  ~Triangle(){cout<<"撤销错误对象"<<endl;delete a;delete b;delete c;}
  float girth (){ return x+y+z;}//求周长
     
  
  void sort()
  {
   float temp;int m ;
      float max[]={x,y,z};
     for(int i=0;i<2;i++){//对三边排序,这里感觉很笨拙,
      //但是自认为是整个问题的处理变得更简单
      //不知道是否有比着更简单直白有效自然的处理方法
      m=i;
         for(int k=i;k<3;k++)
         if(max[k]<max[m])
         m=k;
               temp =max;
         max=max[m];
          max[m]=temp;
     }
     
     
     x=max[0];y=max[1];z=max[2];//重新排列三条边
     cout<<"三角形三边按序输出为:"<<endl;
     cout<<"小边="<<x<<"  中边="<<y<<"  大边="<<z<<endl<<endl;}//按序输出三条边
  
  
     void shape(){if(z>=x+y)//这里的if和else感觉也是好别扭!
  
  {cout<<"这简直不是个三角形!"<<endl;
  cout<<"你的输入有误,请核对后再拨!"<<endl;
  ~Triangle()
  Triangle(a,b,c);}
  //当重新输入后,程序会发生错误,用析构函数吗?晕了,睡觉去,大家帮忙看哈
  else
     if(x==y||y==z||x==z)
    cout<<"这是个等腰三角形!"<<endl;
           else
    if(x*x+y*y==z*z)
                   cout<<"这是个直角三角形!"<<endl<<endl;
           else
              if((z*z)>(x*x+y*y))
                  cout<<"这是个钝角三角形!"<<endl;
                        else
                 
                      cout<<"这是个锐角三角形!"<<endl;
   
  }
  float area(){
     float H=(x+y+z)/2;
   float S=sqrt(H*(H-x)*(H-y)*(H-z));
    return S;}
};
  
void main()
{
  Triangle ob(a,b,c);
  ob.sort ();
  ob.shape();
  cout<<"三角形的周长为:"<<ob.girth()<<endl;
  cout<<"三角形的面积为:"<<ob.area()<<endl;
}

TOP

程序已经完善

//程序已经完善,但是里面很多“废话”以注释的方式保留了下来,那就算是一个个脚印吧

#include<iostream.h>
#include<math.h>
class Triangle{
private:
     float x,y,z;                           //三角形的三条边
public:
  Triangle ( float a,  float b,float c)     //构造函数,确定三角形
  {  x=a;
         y=b;
         z=c;
  }
void set_Triangle(float a,  float b,float c) //重新输入三角形边长,“重新”!不是再次
{    x=a;
     y=b;
     z=c;
}

/*void input()
  {  
         float a,b,c;
        cout<<"请依次输入三角形的三条边的长度:"<<endl;
          cout<<"a=";
             cin>>a;
         cout<<"b=";
             cin>>b;
         cout<<"c=";
             cin>>c;
}*/


float girth (){ return x+y+z;}//求周长
     
  
  void sort()                           //对三边排序,这里感觉很笨拙,
  {
      float temp;int m ;
      float max[]={x,y,z};
      for(int i=0;i<2;i++)
         {     m=i;
       for(int k=i;k<3;k++)
                if(max[k]<max[m])
              m=k;                          //不知道是否有比着更简单直白有效自然的处理方法,才三个数啊
         temp =max;        
         max=max[m];
         max[m]=temp;               
     }
     
     
     x=max[0]; y=max[1]; z=max[2];                   //重新排列三条边
     cout<<"三角形三边按序输出为:"<<endl;
      cout<<"小边="<<X<<"  中边="<<Y<<"  大边="<<Z<<endl<<endl;
    cout<<"你的输入有误,请核对后再拨!"<<endl;


  return 0;

}
                 else
          return 1;
}
void shaped()
{
    if(x==y||y==z||x==z)
    cout<<"这是个等腰三角形!"<<endl;
         if(x==y&&z*z==x*x*2)
     cout<<"这是个直角等腰三角形!"<<endl;
            

else
    if(x*x+y*y==z*z)
        cout<<"这是个直角三角形!"<<endl<<endl;
         

else
     if((z*z)>(x*x+y*y))
           cout<<"这是个钝角三角形!"<<endl;
        

else
                 
         cout<<"这是个锐角三角形!"<<endl;
}
  


float area()
{
     float H=(x+y+z)/2;
     float S=sqrt(H*(H-x)*(H-y)*(H-z));
     return S;
}


};
  
void main()
{  
        float a,b,c;
        cout<<"请依次输入三角形的三条边的长度:"<<endl;
          cout<<"a=";
             cin>>a; //这里和下面,明显感觉代码重复,想用个input()函数换掉,但是没处理好
         cout<<"b=";
             cin>>b;
         cout<<"c=";
             cin>>c;
     

   Triangle ob(a,b,c);
   
   ob.sort ();
    while(ob.shape()==0)
        {   cout<<"请依次输入三角形的三条边的长度:"<<endl;
          cout<<"a=";
             cin>>a;
         cout<<"b=";
             cin>>b;
         cout<<"c=";
             cin>>c;
               
                ob.set_Triangle(a,b,c);   //重新设定三角形边长
                ob.sort();
        }
  
                ob.shaped();
  
  cout<<"三角形的周长为:"<<ob.girth()<<endl;
   cout<<"三角形的面积为:"<<ob.area<<endl;
}


[ 本帖最后由 tanglinkun 于 2008-6-17 17:22 编辑 ]

TOP

谢谢分享!

TOP

发新话题