第5周项目2对象作为数据成员

来源:互联网 发布:access数据库窗体查询 编辑:程序博客网 时间:2024/05/21 09:08
编号及代码:/**Copyright(c)2015,烟台大学计算机与工程学院*All rights reserved;*文件名称:score.cpp*作者:范星月*完成日期:2015年3月16日*版本号: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 ;//两点之间的距离    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);   double  perimeter(void);  double area(void);    bool isRightTriangle();    bool isIsoscelesTriangle();private:    CPoint A,B,C;};CPoint::CPoint (double xx,double yy){    x=xx;    y=yy;}void CPoint::input(){    char ch;    while(1)    {        cin>>x>>ch>>y;        if(ch==',')break;        else cout<<"请重新输入"<<endl;    }}void CPoint::output(){    cout<<"("<<x<<","<<y<<")"<<endl;}double CPoint::distance1(CPoint p)const //两点之间的距离{    double d;    d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));    return d;} void CTriangle::setTriangle(CPoint&x,CPoint &y,CPoint&z) {     A=x;     B=y;     C=z; }double CTriangle::perimeter() {    double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);    return (a+b+c); }double CTriangle::area(void)  {    double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);    double s=(a+b+c)/2;    return sqrt(s*(s-a)*(s-b)*(s-c));    }  bool CTriangle::isRightTriangle()  {      double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);    double max=a;    if(b>max)max=b;    if(c>max)max=c;    if(((max==a)&&(abs(a*a-b*b-c*c)<1e-7))||((max==b)&&(abs(b*b-a*a-c*c)<1e-7))||((max==c)&&(abs(c*c-a*a-b*b)<1e-7)))        return true;    else return false;  }  bool CTriangle::isIsoscelesTriangle()  {      double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);      if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(a-c)<1e-7))        return true;      else        return false;  }int main(){    CPoint x(0,0),y(1,0),z(0,2);    CTriangle Tri1(x,y,z);    cout<<"该三角形的周长是:"<<Tri1.perimeter()<<endl;    cout<<"该三角形"<<(Tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;    cout<<"该三角形"<<(Tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;    return 0;}

学习总结:问题需要两个类

0 0