您的位置:首页 > 编程语言 > C语言/C++

第六周C++实验报告(4)

2012-03-28 08:18 369 查看
【题目】设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形

#include<iostream>   

  

#include<cmath>   

  

using namespace std;  

class CPoint  

{  

private:  

   double x;  // 横坐标   

    double y;  // 纵坐标   

public:  

    CPoint(double xx=0,double yy=0);  

    float getx();  

    float gety();  

};  

class CTriangle  

{  

public:  

    CTriangle(CPoint &X,CPoint &Y,CPoint &Z,int i=0):A(X),B(Y),C(Z),i(i){} //给出三点的构造函数   

    void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);  

    float perimeter(void);//计算三角形的周长   

    float area(void);//计算并返回三角形的面积   

    void isRightTriangle(); //是否为直角三角形   

    void isIsoscelesTriangle(); //是否为等腰三角形   

    void Distance(CPoint &p,CPoint &q) ;   // 两点之间的距离(一点是当前点,另一点为参数p)   

private:  

    CPoint A,B,C; //三顶点   

   float bian[3];  

    int i;  

      

};  

void main()  

{  

    CPoint c1(0,0),c2(1,0),c3(0,1);  

    CTriangle m(c1,c2,c3);  

    m.setTriangle(c1,c2,c3);  

    m.Distance(c1,c2);  

    m.Distance(c1,c3);  

   m.Distance(c2,c3);  

    cout<<"三角形的周长为:"<<m.perimeter()<<endl;//计算三角形的周长   

    cout<<"三角形的面积为:"<<m.area()<<endl;//计算并返回三角形的面积   

   m.isRightTriangle(); //是否为直角三角形   

    m.isIsoscelesTriangle(); //是否为等腰三角形   

}  

float CPoint::getx()  

{  

    return x;  

}  

float CPoint::gety()  

{  

    return y;  

}  

CPoint::CPoint(double xx,double yy)  

{  

    x=xx;  

    y=yy;  

}  

void  CTriangle::Distance(CPoint &p,CPoint &q)   

{  

    int m=0;  

    bian[m+i]=sqrt((p.getx()-q.getx())*(p.getx()-q.getx())+(p.gety()-q.gety())*(p.gety()-q.gety()));  

    ++i;  

}  

float CTriangle::perimeter(void)//计算三角形的周长   

{  

   float s=0;  

   --i;  

    s=s+bian[i]+bian[i-1]+bian[i-2];  

    return s;  

}  

  

  

float CTriangle::area(void) //计算并返回三角形的面积   

{   

    float s,m;    

    int i=0;  

    m=(bian[i]+bian[i+1]+bian[i+2])/2;          

    s=sqrt(m*(m-bian[i])*(m-bian[i+1])*(m-bian[i+2]));       

    return s;    

}  

  

void CTriangle::isRightTriangle()   //是否为直角三角形   

{  

    int i=0;  

    int m,n,c;  

    m=bian[i];  

   n=bian[i+1];  

    c=bian[i+2];  

    if((m*m+n*n)==c*c||(m*m+c*c)==n*n||(c*c+n*n)==m*m)  

    {  

        cout<<"此三角形为直角三角形"<<endl;  

    }  

    else  

    {  

        cout<<"此三角形不是直角三角形"<<endl;  

   }  

}  

  

void CTriangle::isIsoscelesTriangle() //是否为等腰三角形   

{  

    float m,n,c;  

    int i=0;  

    m=bian[i];  

    n=bian[i+1];  

    c=bian[i+2];  

    if(m==n||m==c||n==c)  

    {  

       cout<<"此三角形为等腰三角形"<<endl;  

    }  

   else  

    {  

        cout<<"此三角形不是等腰三角形"<<endl;  

   }  

}  

void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)  

{  

   A=X;  

   B=Y;  

    C=Z;  

      

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ float distance c class