/**********************************************************/
//Function : main,Triangle类
//parm :
//comment :
//return : void
//Author :
//date : 2011.10.23
/**********************************************************/
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
class Triangle{
public:
Triangle(double x,double y,double z)
{
a = x;
b = y;
c = z;
}
Triangle(double x,double y)
{
a = x;
b = x;
c = y;
}
Triangle(double x)
{
a = x;
b = x;
c = x;
}
Triangle()
{
a = 5;
b = 5;
c = 5;
}
double GetArea()
{
double k=(a + b + c) / 2;
return sqrt( k * (k - a) * (k - b) * (k - c));
}
double GetPerimeter()
{
return a + b + c;
}
int TriangleType();
void Show();
private:
double a,b,c;
};
int Triangle::TriangleType() //This function can be optimized!
{
if(a <= 0 || b <= 0 || c <= 0 || a + b < c || a + c < b || b + c < a)
return 0; //wrong
else
{
if(a == b && b == c)
return 1; //equilateral triangle
else
{
if(a == b || b == c)
{
if(a * a + b * b - c * c < 1e-3 ||
a * a + c + c - b * b < 1e-3 ||
b * b + c * c - a * a < 1e-3)
return 2; //isoceles triangle right-angled triangle
else
return 3; //isoceles triangle
}
else
{
if(a * a + b * b == c * c ||
a * a + c * c == b * b ||
b * b + c * c == a * a)
return 4; //right-angled triangle
}
}
}
return 5;
}
void Triangle::Show()
{
int flag;
cout<<"The Triangle's sides are:"<<a<<","<<b<<","<<c<<endl;
flag = TriangleType();
switch(flag)
{
case 0: cout<<"The Triangle data is wrong!"<<endl; break;
case 1: cout<<"The Triangle is equilateral triangle!"<<endl; break;
case 2: cout<<"The Triangle is isoceles triangle right-angled triangle!"<<endl; break;
case 3: cout<<"The Triangle is isoceles triangle!"<<endl; break;
case 4: cout<<"The Triangle is right-angled triangle!"<<endl; break;
case 5: cout<<"The Triangle is general triangle!"<<endl; break;
}
if(!TriangleType())
exit(0);
cout<<"The Triangle's Area is:"<<GetArea()<<endl;
cout<<"The Triangle's Perimeter is:"<<GetPerimeter()<<endl;
}
void main()
{
double a,b,c;
cout<<"Please input the three sides of Triangle:"<<endl;
cin>>a>>b>>c;
Triangle T1(a,b,c);
//Triangle T2(a,b);
//Triangle T3(a);
//Triangle T4;
T1.Show();
//T2.Show();
//T3.Show();
//T4.Show();
}

被折叠的 条评论
为什么被折叠?



