c++4
来源:互联网 发布:android加密软件 编辑:程序博客网 时间:2024/04/28 00:02
<pre name="code" class="cpp">一 问题及代码: [cpp] view plain copy/* *文件名称:Ex1.6cpp *作者:李洪 *完成日期:2016年4月14日 *版本号:v1.0 *对任务及求解方法的描述部分:利用类,对三个数能否构成三角形进行判断,并输出三角形的周长及面积。 *输入描述:无 *问题描述: (1)下面设计一个三角形类,请给出各成员函数的定义 (2)在上面程序的基础上,重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内联成员函数,直接在类内定义。 (3)设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。需要的测试函数是: (4)使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。需要的测试函数是: (5)使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象: *问题分析:本题是类中成员函数应用,有构造函数,内联成员函数,复制构造函数等,比较综合,其中复制构造函数应用中需要用到引用,同时要注意拷贝构造函数的书写格式。 *算法设计: */ (1)下面设计一个三角形类,请给出各成员函数的定义 #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'<<"面积为:"<< tri1.area()<<endl; return 0; } void Triangle::setABC(double x,double y,double z) { a=x; b=y; c=z; if((a+b<=c)||(a+c<=b)||(b+c<=a)) exit(0); } double Triangle::perimeter() { double h; h=a+b+c; return h; } double Triangle::area() { double m,s; m=(a+b+c)/2; s=sqrt(m*(m-a)*(m-b)*(m-c)); return s; } (2)在上面程序的基础上,重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内联成员函数,直接在类内定义。 #include<iostream> #include<cmath> using namespace std; class Triangle { public: bool isTriangle(); 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();//计算并返回三角形的面积 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'<<"面积为:"<< tri1.area()<<endl; } else cout<<"不能构成三角形"<<endl; return 0; } bool Triangle::isTriangle() { if((a+b>c)&&(b+c>a)&&(a+c>b)) return true; else return false; } double Triangle::perimeter() { double h; h=a+b+c; return h; } double Triangle::area() { double m,s; m=(a+b+c)/2; s=sqrt(m*(m-a)*(m-b)*(m-c)); return s; } (3)设计三角形类带参数的构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出,使对象在定义时能够进行初始化。需要的测试函数是: #include<iostream> #include<iostream> #include<cmath> using namespace std; class Triangle { public: Triangle(double x,double y,double z); double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 void showMessage();//定义一个能显示三角形信息的成员函数 private: double a,b,c; //三边为私有成员数据 }; int main() { Triangle Tri(7,8,9); //定义三角形类的一个实例(对象) Tri.showMessage();//定义一个能显示三角形信息的成员函数 return 0; } Triangle::Triangle(double x,double y,double z) { a=x; b=y; c=z; } double Triangle::perimeter() { double h; h=a+b+c; return h; } double Triangle::area() { double m,s; m=(a+b+c)/2; s=sqrt(m*(m-a)*(m-b)*(m-c)); return s; } void Triangle::showMessage() { cout<<"三角形的三边是:"<<a<<","<<b<<","<<c<<endl; cout<<"三角形的周长是:"<<perimeter()<<endl<<"三角形的面积是:"<<area()<<endl; } (4)使用有默认参数的构造函数,不给定实参时,默认边长为1;注意——只需要一个构造函数即可。需要的测试函数是: #include<iostream> #include<cmath> using namespace std; class Triangle { public: Triangle(double x=1,double y=1,double z=1); double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 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; } Triangle::Triangle(double x,double y,double z) { a=x; b=y; c=z; } double Triangle::perimeter() { double h; h=a+b+c; return h; } double Triangle::area() { double m,s; m=(a+b+c)/2; s=sqrt(m*(m-a)*(m-b)*(m-c)); return s; } void Triangle::showMessage() { cout<<"三角形的三边是:"<<a<<","<<b<<","<<c<<endl; cout<<"三角形的周长是:"<<perimeter()<<endl<<"三角形的面积是:"<<area()<<endl; } (5)使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象: #include<iostream> #include<cmath> using namespace std; class Triangle { public: Triangle(double x,double y,double z); Triangle(const Triangle &p); double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 void showMessage();//定义一个能显示三角形信息的成员函数 private: double a,b,c; //三边为私有成员数据 }; int main() { Triangle Tri1(3,4,5); //定义边长为3 4 5的三角形类实例 Tri1.showMessage(); Triangle Tri2(Tri1); //调用复制构造函数 Tri2.showMessage(); return 0; } Triangle::Triangle(double x,double y,double z) { a=x; b=y; c=z; } Triangle::Triangle(const Triangle &p) { a=p.a; b=p.b; c=p.c; } double Triangle::perimeter() { double h; h=a+b+c; return h; } double Triangle::area() { double m,s; m=(a+b+c)/2; s=sqrt(m*(m-a)*(m-b)*(m-c)); return s; } void Triangle::showMessage() { cout<<"三角形的三边是:"<<a<<","<<b<<","<<c<<endl; cout<<"三角形的周长是:"<<perimeter()<<endl<<"三角形的面积是:"<<area()<<endl; } 二(5)运行结果:<img src="http://img.blog.csdn.net/20160526164146778?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />三 心得体会:本次对类应用写的程序相对于先前没那么吃力了,更加熟练了一点,对于编程只有多多练习,提高的才有可能更快。四 知识点总结:类中各种函数的应用,如析构函数,拷贝构造函数。
0 0
- C/C++(4)C调用C++方法
- C++(4)
- C.4
- c++(4)
- c+=4和c=c+4的区别。
- c+=4和c=c+4的区别
- 高质量C++/C编程指南[4]
- C/C++/C#面试题精选4
- C/C++/C#面试题(4)
- 【C++进阶】深入理解C/C++(4)
- C语言程序设计 第一章C语言概述.4
- Accelerated C++<4-4>
- C函数库大全 4
- 二级C语言(4)
- C/C++进阶[4]
- c基础(4)
- C图形编程4
- Thinking in C++(4)
- Ajax跨域的解决方法之JSONP
- IntelliJ IDEA中Maven插件无法更新索引之解决办法
- 程序员如何谋划出月薪3万
- 【增强学习】Recurrent Visual Attention源码解读
- 获取广电高清直播源
- c++4
- c++实验7-特殊三位数
- <LeetCode OJ> 106. Construct Binary Tree from Inorder and Postorder Traversal
- 程序求1!+2!+3!+...+1000!的和, 求1到1000阶乘之和
- Linux内核驱动子系统(一)GPIO的使用
- 日记(2016/6/3)
- c++5
- C++回顾(1)——const的用法
- 扩容树莓派SD卡分区空间