c++第五作业—三角形类

来源:互联网 发布:网络运维需求调查表 编辑:程序博客网 时间:2024/06/06 09:46

三角形类

/* 文件名称:项目6.cpp * 作    者:严明远 * 完成日期:2017 年 4 月 24 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述:无 * 问题描述:    三角形类* 算法设计:略 */  

(1)下面设计一个三角形类,请给出各成员函数的定义

一、问题及代码
#include<iostream>#include<cmath>#include<cstdlib>using namespace std;class Triangle  {  public:      void setABC(double x, double y, double z);//置三边的值,注意要能成三角形,不是可以提示后直接用exit(0)退出,要加头文件cstdlib      double perimeter();//计算三角形的周长      double area();//计算并返回三角形的面积  private:      double a,b,c; //三边为私有成员数据  };  int main()  { int a,b,c;    Triangle tri1;  //定义三角形类的一个实例(对象)      tri1.setABC(3,4,5); //为三边置初值      cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl; cin>>a>>b>>c;tri1.setABC(a,b,c);cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;     return 0;  } void Triangle::setABC(double x,double y,double z){if((x+y<=z)||(x+z<=y)||(y+z<=x)){cout<<"数据不能构成三角形!"<<endl;exit(0);}else {a=x; b=y;c=z;}}double Triangle::perimeter(){return a+b+c;}double Triangle::area(){int p,s;p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));return s;}

二、运行结果



(2)在上面程序的基础上,重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内联成员函数,直接在类内定义。

一、问题及代码
#include<iostream>#include<cmath>using namespace std;class Triangle{public:    void setA(int x)    {        a=x;    }    void setB(int y)    {        b=y;    }    void setC(int z)    {        c=z;    }    int getA()    {        return a;    }    int getB()    {        return b;    }    int getC()    {        return c;    }    bool isTriangle();    double perimeter();    double area();private:    int a,b,c;} ;int main(){    Triangle tri1;  //定义三角形类的一个实例(对象)    double x,y,z;    cout<<"请输入三角形的三边:";    cin>>x>>y>>z;    tri1.setA(x);    tri1.setB(y);    tri1.setC(z);   //为三边置初值    if(tri1.isTriangle())  //isTriangle()返回值为布尔型,用于判断给出的三边是否能构成一个三角形    {        cout<<"三条边为:"<<tri1.getA()<<','<<tri1.getB()<<','<<tri1.getC()<<endl;        cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;    }    else        cout<<"不能构成三角形"<<endl;    return 0;}bool Triangle::isTriangle(){if((a+b<=c)||(a+c<=b)||(b+c<=a))        return false;else        return true;}double Triangle::perimeter(){    return (a+b+c);}double Triangle::area(){    int p,s;    p=(a+b+c)/2;    s=sqrt(p*(p-a)*(p-b)*(p-c));    return s;}
二、运行结果


(3)设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。需要的测试函数是:

一、问题及代码
#include<iostream>using namespace std;class Triangle{public:Triangle(double x,double y,double z){a=x;b=y;c=z;}void showMessage();private:int a,b,c;};int main()  {      Triangle Tri(7,8,9);    //定义三角形类的一个实例(对象)      Tri.showMessage();   //定义一个能显示三角形信息的成员函数      return 0;  }void Triangle::showMessage(){cout<<"三角形各边:"<<a<<" "<<b<<" "<<c<<endl;}

(4)使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。需要的测试函数是:

一、问题及代码
#include<iostream>using namespace std;class Triangle{public:    Triangle(double x=1,double y=1,double z=1)    {        a=x;        b=y;        c=z;    }    void showMessage();private:    double a,b,c;};int main(){    Triangle Tri1;   //定义边长为1 1 1的三角形类实例    Tri1.showMessage();    Triangle Tri2(1.5);//定义边长为1.5 1 1的三角形类实例    Tri2.showMessage();    Triangle Tri3(1.5,1.5);//定义边长为1.5 1.5 1的三角形类实例    Tri3.showMessage();    Triangle Tri4(7,8,9); //定义边长为7 8 9的三角形类实例    Tri4.showMessage();    return 0;}void Triangle::showMessage(){    cout<<"三角形边长"<<a<<'\t'<<b<<"\t"<<c<<endl;}

二、运行结果


(5)使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象:

一、问题及代码
#include<iostream>using namespace std;class Triangle{public:    Triangle(double x=1,double y=1,double z=1)    {        a=x;        b=y;        c=z;    }    void showMessage();private:    double a,b,c;};int main(){    Triangle Tri1;   //定义边长为1 1 1的三角形类实例    Tri1.showMessage();    Triangle Tri2(1.5);//定义边长为1.5 1 1的三角形类实例    Tri2.showMessage();    Triangle Tri3(1.5,1.5);//定义边长为1.5 1.5 1的三角形类实例    Tri3.showMessage();    Triangle Tri4(7,8,9); //定义边长为7 8 9的三角形类实例    Tri4.showMessage();    return 0;}void Triangle::showMessage(){    cout<<"三角形边长"<<a<<'\t'<<b<<"\t"<<c<<endl;}

二、运行结果


0 0
原创粉丝点击