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
- c++第五作业—三角形类
- c++-第五次作业
- 第五次C ++作业
- 第五周—1.2三角形类
- 第五周—1.3三角形类
- 第五周 三角形类
- C语言第五堂作业
- 第五次作业C语言
- 第五周 三角形类2
- 第五周 三角形类 3
- 作业——判断三角形。
- 第五周项目一——三角形类(2)
- 第五周项目一——三角形类(4)
- 第五周项目一——三角形类(1)
- 第五周——构造函数三角形类
- 第五周项目一—三角形类(3)
- 第五周—1.1三角形类(默认构造函数)
- 第五周项目1—三角形锥类
- Bagging – building an ensemble of classifers from bootstrap samples
- C++之拷贝构造与拷贝赋值
- AJAX
- 常用操作
- Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
- c++第五作业—三角形类
- 【LeetCode】【Python】【C++】7. Reverse Integer代码实现
- 通过反射取类的属性
- LeetCode 80. Remove Duplicates from Sorted Array II
- Java compiler level does not match the version of the installed Java project facet
- Android之WebView优化之路
- Android事件分发08——TouchDelegate的使用的一个示例与问题分析
- STL Map使用详解(一)(包含如何按关键字降序排列)
- MongoDB学习(二):数据类型和基本概念