一、问题及代码 :
/*
* 文件名称:TEST.cpp
* 作 者:胡嘉威
* 完成日期:2017 年 4 月 25 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:设计一个三角形类,给出各成员函数的定义
* 输入描述:无
* 问题描述:设计一个三角形类,给出各成员函数的定义
* 程序输出:三角形的周长为:15
三角形的面积为:6
* 问题分析:本质上还是函数的应用,只不过使用类的形式加以表达。
* 算法设计:在函数定义时用调用私有模块的a b c来完成计算。
*/
#include <iostream>
#include<cstdlib>
#include<cmath>
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()
{
Triangle tri1; //定义三角形类的一个实例(对象)
tri1.setABC(4, 5, 6);//为三边置初值
cout << "三角形的周长为:" << tri1.perimeter() << '\t' <<endl<< "三角形的面积为:" << tri1.area() << endl;
return 0;
}
//请在下面定义Triangle类中的各个成员函数
void Triangle::setABC(double x,double y,double z) //置三边的值,注意要能成三角形,不是可以提示后直接用exit(0)退出,要加头文件cstdlib
{
a=x;
b=y;
c=z;
if ((a+b<=c)||(a+c<=b)||(b+c<=a))
{
cout <<"输入不正确,所输入的三条边不能组成三角形,请重新输入" <<endl;
exit(0);
}
}
double Triangle::perimeter() //计算三角形的周长
{
int w;
w=a+b+c;
return w;
}
double Triangle::area()
{
int S=0,k=0;
k=(a+b+c)/2;
S=sqrt(k*(k-a)*(k-b)*(k-c));
return S;
}
二、运行结果 :
一、问题及代码 :
/*
* 文件名称:TEST.cpp
* 作 者:胡嘉威
* 完成日期:2017 年 4 月 25 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:设计一个三角形类,给出各成员函数的定义;逻辑特别简单的set和get成员函数,要处理为内联成员函数,直接在类内定义。
* 输入描述:4 5 6
* 问题描述:设计一个三角形类,给出各成员函数的定义
* 程序输出:请输入三角形的三边:4 5 6
三角形的三条边为:4,5,6
三角形的周长为:15
三角形的面积为:6
* 问题分析:本质上还是函数的应用,只不过使用类的形式加以表达。
* 算法设计:在函数定义时用调用私有模块的a b c来完成计算。
*/
#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;
}
double perimeter(); //计算三角形的周长
double area();
bool isTriangle(); //计算并返回三角形的面积
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()) //isTriangle()返回值为布尔型,用于判断给出的三边是否能构成一个三角形
{
cout << "三角形的三条边为:" << tri1.getA() << ',' << tri1.getB() << ',' << tri1.getC() << endl;
cout << "三角形的周长为:" << tri1.perimeter() << '\t' <<endl<< "三角形的面积为:" << tri1.area() << endl;
}
else
cout << "不能构成三角形" << endl;
return 0;
}
double Triangle::perimeter() //计算三角形的周长
{
int w;
w=a+b+c;
return w;
}
double Triangle::area() //计算并返回三角形的面积
{
int S=0,k=0;
k=(a+b+c)/2;
S=sqrt(k*(k-a)*(k-b)*(k-c));
return S;
}
bool Triangle::isTriangle() //判断给出的三边是否能构成一个三角形
{
if ((a+b<=c)||(a+c<=b)||(b+c<=a))
{
return 0;
}
else
{
return 1;
}
}
二、运行结果 :
一、问题及代码 :
/*
* 文件名称:TEST.cpp
* 作 者:胡嘉威
* 完成日期:2017 年 4 月 25 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:设计一个三角形类,给出各成员函数的定义;设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。
* 输入描述:无
* 问题描述:设计一个三角形类,给出各成员函数的定义;设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。
* 程序输出:三角形的三条边为:7 8 9
三角形的面积为:26.8328
三角形的周长为:24
* 问题分析:本质上还是函数的应用,只不过使用类的形式加以表达。
* 算法设计:在函数定义时用调用私有模块的a b c来完成计算。
*/
#include <iostream>
#include<cmath>
using namespace std;
class Triangle
{
public:
Triangle(double x,double y,double z)
{
a=x;
b=y;
c=z;
}
double showMessage(); //计算并返回三角形的面积
private:
double a,b,c; //三边为私有成员数据
};
int main()
{
Triangle Tri(7, 8, 9);
Tri.showMessage();
return 0;
}
double Triangle::showMessage() //计算并返回三角形的面积及周长
{
double S=0;
int k=0,w=0;
if ((a+b<=c)||(a+c<=b)||(b+c<=a))
{
cout << "不能构成三角形" << endl;
}
else
{
cout << "三角形的三条边为:" <<a<<" "<<b<<" "<<c<<endl;
k=(a+b+c)/2;
S=sqrt(k*(k-a)*(k-b)*(k-c));
cout<<"三角形的面积为:"<<S<<endl;
w=a+b+c;
cout<<"三角形的周长为:"<<w<<endl;
}
}
二、运行结果:
一、问题及代码 :
/*
* 文件名称:TEST.cpp
* 作 者:胡嘉威
* 完成日期:2017 年 4 月 25 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:设计一个三角形类,给出各成员函数的定义;使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。
* 输入描述:无
* 问题描述:设计一个三角形类,给出各成员函数的定义;使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。
* 程序输出:三角形的三条边为:1 1 1
三角形的面积为:0.433013
三角形的周长为:3
三角形的三条边为:1.5 1 1
三角形的面积为:0.496078
三角形的周长为:3.5
三角形的三条边为:1.5 1.5 1
三角形的面积为:0.707107
三角形的周长为:4
三角形的三条边为:7 8 9
三角形的面积为:26.8328
三角形的周长为:24
* 问题分析:本质上还是函数的应用,只不过使用类的形式加以表达。
* 算法设计:在函数定义时用调用私有模块的a b c来完成计算。
*/
#include <iostream>
#include<cmath>
using namespace std;
class Triangle
{
public:
Triangle(double x=1,double y=1,double z=1)
{
a=x;
b=y;
c=z;
};
double showMessage(); //计算并返回三角形的面积
private:
double a,b,c; //三边为私有成员数据
};
int main()
{
Triangle Tri1; //定义边长为1 1 1的三角形类实例
Tri1.showMessage();
cout<<endl;
Triangle Tri2(1.5); //定义边长为1.5 1 1的三角形类实例
Tri2.showMessage();
cout<<endl;
Triangle Tri3(1.5, 1.5); //定义边长为1.5 1.5 1的三角形类实例
Tri3.showMessage();
cout<<endl;
Triangle Tri4(7, 8, 9); //定义边长为7 8 9的三角形类实例
Tri4.showMessage();
return 0;
}
double Triangle::showMessage() //计算并返回三角形的面积及周长
{
double S=0;
double k=0;
int w=0;
if ((a+b<=c)||(a+c<=b)||(b+c<=a))
{
cout << "不能构成三角形" << endl;
}
else
{
cout << "三角形的三条边为:" <<a<<" "<<b<<" "<<c<<endl;
k=(a+b+c)/2;
S=sqrt(k*(k-a)*(k-b)*(k-c));
cout<<"三角形的面积为:"<<S<<endl;
w=a+b+c;
cout<<"三角形的周长为:"<<w<<endl;
}
}
二、运行结果 :
一、问题及代码 :
/*
* 文件名称:TEST.cpp
* 作 者:胡嘉威
* 完成日期:2017 年 4 月 25 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:设计一个三角形类,给出各成员函数的定义;使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象。
* 输入描述:无
* 问题描述:设计一个三角形类,给出各成员函数的定义
* 程序输出:三角形的三条边为:3 4 5
三角形的面积为:6
三角形的周长为:12
三角形的三条边为:3 4 5
三角形的面积为:6
三角形的周长为:12
* 问题分析:本质上还是函数的应用,只不过使用类的形式加以表达。
* 算法设计:在函数定义时用调用私有模块的a b c来完成计算。
*/
#include <iostream>
#include<cmath>
using namespace std;
class Triangle
{
public:
Triangle(double x,double y,double z)
{
a=x;
b=y;
c=z;
};
double showMessage(); //计算并返回三角形的面积
private:
double a,b,c; //三边为私有成员数据
};
int main()
{
Triangle Tri1(3, 4, 5);//定义边长为3 4 5的三角形类实例
Tri1.showMessage();
cout<<endl;
Triangle Tri2(Tri1); //调用复制构造函数
Tri2.showMessage();
return 0;
}
double Triangle::showMessage() //计算并返回三角形的面积及周长
{
double S=0;
double k=0, w=0;
if ((a+b<=c)||(a+c<=b)||(b+c<=a))
{
cout << "不能构成三角形" << endl;
}
else
{
cout << "三角形的三条边为:" <<a<<" "<<b<<" "<<c<<endl;
k=(a+b+c)/2;
S=sqrt(k*(k-a)*(k-b)*(k-c));
cout<<"三角形的面积为:"<<S<<endl;
w=a+b+c;
cout<<"三角形的周长为:"<<w<<endl;
}
}
二、运行结果 :