/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:score.cpp
*作 者:战九州
*完成日期:2015年4月11日
*版 本 号:v1.0
*
*问题描述:。。。。。。。。。
*程序输入:。。。。。。。。。
*程序输出:。。。。。。。。。
*/
#include <iostream>
#include <cmath>
using namespace std;
class CPoint
{
private:
double x; // 横坐标
double y; // 纵坐标
public:
CPoint(double xx=0,double yy=0);
double Distance1(CPoint p) const; //两点之间的距离(一点是当前点——想到this了吗?,另一点为p)
double Distance0() const; // 到原点(0,0)的距离
CPoint SymmetricAxis(char style) const;//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称
void input(); //以x,y 形式输入坐标点
void output(); //以(x,y) 形式输出坐标点
};
class CTriangle
{
public:
CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z) {} //给出三点的构造函数
void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);//
float perimeter(void);//计算三角形的周长
float area(void);//计算并返回三角形的面积
bool isRightTriangle(); //是否为直角三角形
bool isIsoscelesTriangle(); //是否为等腰三角形
private:
CPoint A,B,C; //三顶点
};
CPoint::CPoint(double xx,double yy)
{
x=xx;
y=yy;
}
double CPoint::Distance1(CPoint p) const
{
double a;
a=(sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)));
return a;
}
void CTriangle:: setTriangle(CPoint &X,CPoint &Y,CPoint &Z)
{
A=X;
B=Y;
C=Z;
}
float CTriangle::perimeter(void)
{
double a=B.Distance1(C),b=C.Distance1(A),c=B.Distance1(A);
return (a+b+c);
}
float CTriangle:: area(void)
{
double a=B.Distance1(C),b=C.Distance1(A),c=B.Distance1(A);
double p;
p=(a+b+c)/2;
return (sqrt(p*(p-a)*(p-b)*(p-c)));
}
bool CTriangle:: isRightTriangle()
{
double a=B.Distance1(C),b=C.Distance1(A),c=B.Distance1(A);
if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
return true;
else
return false;
}
bool CTriangle:: isIsoscelesTriangle()
{
double a=B.Distance1(C),b=C.Distance1(A),c=B.Distance1(A);
if((a==b)||(b==c)||(a==c))
return true;
else
return false;
}
void CPoint:: input()
{
char c;
cout<<"输入坐标点:";
cin>>x>>c>>y;
}
void CPoint:: output()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
int main()
{
CPoint A,B,C;
A.input();
B.input();
C.input();
CTriangle t(A,B,C);
cout<<"周长:"<<t.perimeter()<<endl;
cout<<"面积:"<<t.area()<<endl;
if(t.isRightTriangle())
cout<<"该三角形是直角三角形"<<endl;
else
cout<<"该三角形不是直角三角形"<<endl;
if(t.isIsoscelesTriangle())
cout<<"该三角形是等腰三角形"<<endl;
else
cout<<"该三角形不是等腰三角形"<<endl;
return 0;
}