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

C++第二次实验补充

2016-04-15 22:50 253 查看
一:问题陈述
/*
* 文件名称: 2.cpp
* 作    者:李明阳
* 完成日期:     2016 年  04   月  15  日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:利用类的定义,和函数的定义来完成。
* 输入描述:输入三角形的三边
* 问题描述: 在上面程序的基础上,重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内联成员函数,直接在类内定义。
设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。需要的测试函数是:
使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。需要的测试函数是
使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象
* 程序输出:
* 问题分析:对于不同种类的函数声明的方式不同, 还有就是注意头文件。
* 算法设计:
*/  
二(1)源程序

#include<iostream>
#include<cstdlib>
#include<Cmath>
using namespace std;
class Triangle
{
public:
void setABC(double x, double y, double z);//置三边的值,注意要能成三角形
double perimeter();//计算三角形的周长
double area();//计算并返回三角形的面积
private:
double a,b,c;
};
int main()
{
Triangle tri1;
tri1.setABC(4,5,6); //为三边置初值
cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
return 0;
}
//请在下面定义Triangle类中的各个成员函数
void Triangle::setABC(double x, double y, double z)
{
if(x+y>z&&x+z>y&&y+z>x)
{
a=x;
b=y;
c=z;
}
else
{
cout<<"不能构成三角形"<<endl;
exit(0);  //直接退出程序的执行
}
}

double Triangle::perimeter(void)
{
return a+b+c;
}

double Triangle::area(void)
{
double p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
三:运算结果




二(2)

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
void setA(double x)
{
a=x;
};
void setB(double y)
{
b=y;
};
void setC(double z)
{
c=z;
};

double getA()
{
return a;
}
double getB()
{
return b;
}
double getC()
{
return c;
}
bool isTriangle();//判断是否构成三角形
double perimeter(void);//计算三角形的周长
double area(void);//计算并返回三角形的面积
private:
double 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())
{
cout<<"三条边为:"<<tri1.getA()<<','<<tri1.getB()<<','<<tri1.getC()<<endl;
cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
}
else
cout<<"不能构成三角形"<<endl;
return 0;
}
//请在下面定义Triangle类中的各个成员函数
bool Triangle::isTriangle()
{
return (a+b>c&&a+c>b&&b+c>a);
}

double Triangle::perimeter()
{
return a+b+c;
}

double Triangle::area()
{
double p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
运算结果



二(3)源程序

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
Triangle(double x, double y, double z)//(1)使用带参数构造函数
{
a=x;
b=y;
c=z;
}
double perimeter();//计算三角形的周长
double area();//计算并返回三角形的面积
void showMessage();
private:
double a,b,c; //三边为私有成员数据
};

double Triangle::perimeter()
{
return (a + b + c);
}

double Triangle::area()
{
double s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}

void Triangle::showMessage()
{
cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
cout<<"该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl;
}

int main()
{
Triangle Tri(7,8,9);    //定义三角形类的一个实例(对象)
Tri.showMessage();
return 0;
}
运算结果



二(4)源程序

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
Triangle(double x=1, double y=1, double z=1);//(3)声明使用默认参数的构造函数,不给定实参时,默认边长为1;
double perimeter();//计算三角形的周长
double area();//计算并返回三角形的面积
void showMessage();
private:
double a,b,c; //三边为私有成员数据
};

//本参考解答在类声明之外实现
Triangle::Triangle(double x, double y, double z)
{
a=x;
b=y;
c=z;
}

double Triangle::perimeter()
{
return (a + b + c);
}

double Triangle::area()
{
double s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}

void Triangle::showMessage()
{
cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
cout<<"该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl;
}

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;
}


运算结果



二(5)源程序

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
Triangle(double x=1, double y=1, double z=1);
Triangle(const Triangle &t);
double perimeter();//计算三角形的周长
double area();//计算并返回三角形的面积
void showMessage();
private:
double a,b,c; //三边为私有成员数据
};

Triangle::Triangle(double x, double y, double z)
{
a=x;
b=y;
c=z;
}

Triangle::Triangle(const Triangle &t)
{
a=t.a;
b=t.b;
c=t.c;
}

double Triangle::perimeter()
{
return (a + b + c);
}

double Triangle::area()
{
double s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}

void Triangle::showMessage()
{
cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
cout<<"该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl;
}
int main()
{
Triangle Tri1(3,4,5);   //定义边长为1 1 1的三角形类实例
Tri1.showMessage();
Triangle Tri2(Tri1); //调用复制构造函数
Tri2.showMessage();
return 0;
}


运算结果


四:心得体会

1,对于函数的声明定义有了新的理解。

2,不同函数,在实现时各有长处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: