程序已经完善
//程序已经完善,但是里面很多“废话”以注释的方式保留了下来,那就算是一个个脚印吧
#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 编辑 ]