题目描述
定义一个平面坐标系下的点类Point,有整型数据成员x,y坐标值。成员函数包括:(1)带默认值的构造函数,默认值均为0;(2)拷贝构造函数;(3)置x,y坐标值;(4)取x,y的坐标值,参数为两个整型量的引用,分别用于获取x,y坐标值。(5)输出函数,用于输出x,y坐标值。(6)求两个点之间距离的函数,参数是Point类的对象引用。
定义一个平面坐标系下的三角形类Triangle,数据成员为三个Point类的对象p1、p2、p3。成员函数包括:(1)带参数的构造函数,参数为整型量x1,y1,x2,y2,x3,y3,分别是三角形三个顶点的坐标。(2)带参数的构造函数,参数是三个Point类对象的引用。(3)求三角形周长。(4)求三角形面积。(5)输出三角形的三个顶点坐标、周长和面积。
定义一个普通函数:判断三个顶点坐标能否构成三角形。
main()中,从键盘输入三个点坐标,判断这三个点能否构成三角形,不能,则提示重新输入,并重新输入点坐标;能,则输出三个顶点坐标、周长和面积。
输入描述
三个点的坐标,如果不能构成三角形,再重新输入三个点的坐标
输出描述
三个顶点坐标
三角形周长、三角形面积
输入样例
0 0
1 1
2 2

0 0
5 6
3 0
输出样例
顶点坐标不正确,不能构成三角形!请重新输入坐标!
三角形三个顶点坐标为:
(0,0) (5,6) (3,0)
三角形周长为:17.1348,面积为:9

#include<iostream>
#include<cmath>
using namespace std;
class Point
{public:Point(int a=0,int b=0){x=a;y=b;}Point(const Point &a)//拷贝构造函数{x=a.x;y=a.y;}void input(){cin>>x>>y;}int getx(int &x){return x;}int gety(int &y){return y;}void output(){cout<<"("<<x<<","<<y<<")";}double distance(Point &a){double dx=x-a.x,dy=y-a.y;return sqrt(dx*dx+dy*dy);}
private:int x,y;
};
class Triangle
{public:Triangle(int x1,int y1,int x2,int y2,int x3,int y3){A=(x1,y1);B=(x2,y2);C=(x3,y3);}Triangle(Point &a,Point &b,Point &c){A=a;B=b;C=c;}double Len(){return A.distance(B)+B.distance(C)+C.distance(A);}double Area(){double s=Len()/2.0;return sqrt(s*(s-A.distance(B))*(s-B.distance(C))*(s-C.distance(A)));}void output(){   cout<<endl<<"三角形周长为:"<<Len()<<",面积为:"<<Area();}
private:Point A,B,C;
};
bool ifTriangle(Point &p1,Point &p2,Point &p3)
{   here:if((p1.distance(p2)+p2.distance(p3)>p3.distance(p1))&& (p1.distance(p2) + p3.distance(p1) > p2.distance(p3)) && (p2.distance(p3) + p3.distance(p1) > p1.distance(p2))){    cout << "三角形三个顶点坐标为:" << endl;p1.output();p2.output();p3.output();Triangle T(p1,p2,p3);T.output();}else{cout << "顶点坐标不正确,不能构成三角形!请重新输入坐标!" << endl;return false;}}
int main()
{Point A,B,C;here:A.input();B.input();C.input();if (ifTriangle(A, B, C) == false){goto here;}return 0;
}

判断是否是三角形

两边之和大于第三边
或者(两边之差小于第三边)
但是要列出3个
比如
a+b>c&&a+c>b&&b+c>a

if((p1.distance(p2)+p2.distance(p3)>p3.distance(p1))&& (p1.distance(p2) + p3.distance(p1) > p2.distance(p3)) && (p2.distance(p3) + p3.distance(p1) > p1.distance(p2)))```

C++实验03(03)组合类:Triangle类与Point类相关推荐

  1. java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用

    java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...

  2. 【Java开发语言 03】第三章 面向对象编程(面向对象与面向过程+类和对象+类成员一:属性+类成员二:方法+对象的创建和使用+封装和隐藏+构造器+关键字this,package,import)

    面向对象编程 1 面向对象与面向过程 1.1 java类及类的成员 2 java语言的基本元素:类和对象 2.1 类的语法格式 2.2 创建Java自定义类 2.3 对象的创建及使用 3 类的成员之一 ...

  3. java实验系统常用类,Java的常用系统类

    Java的常用系统类Tag内容描述: 1.Java语言与JBuilder应用初步 第六章 常用的Java系统类,本章要点,字符串类 数值(Number)类及其子类 数组类 集合类 Object类,字符 ...

  4. python中组合与继承的区别_python类与对象的组合与继承

    1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...

  5. python的类和对象例题_Python类、类对象和实例对象、组合、绑定详细讲解

    目录: 一.组合 二.类.类对象和实例对象 三.到底什么是绑定 四.课时39课后习题及答案 *********** 一.组合 *********** 现在要求定义一个类,叫水池,水池里要有乌龟和鱼. ...

  6. Java 应用程序,该程序中有 3 个类:Triangle、T rapezium 和 Circle,分别用来 表示三角形、梯形和圆形。

    Java 应用程序,该程序中有 3 个类:Triangle.T rapezium 和 Circle,分别用来 表示三角形.梯形和圆形. 具体要求如下. Triangle 类具有类型为 double 的 ...

  7. MOOS-ivp 实验四 MOOS编程入门(2)MOOS类讲解

    MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解 文章目录 MOOS-ivp 实验四 MOOS编程入门(2)MOOSapp类讲解 前言 一.MOOSapp父类的结构和方法 1.使用 ...

  8. #十二、编写三角形类Triangle,初始化三个属性,分别是三条边的长度,定义一个计算并打印周长的函数 #十三、编写等腰三角形类EWtriangle,继承于三角形类,初始化只用传一个腰长和一个底长,定

    #十二.编写三角形类Triangle,初始化三个属性,分别是三条边的长度,定义一个计算并打印周长的函数 #十三.编写等腰三角形类EWtriangle,继承于三角形类,初始化只用传一个腰长和一个底长,定 ...

  9. Java实验之接口与实现、内部类与异常类

    Java实验之接口与实现.内部类与异常类 Java实验之接口与实现 评价成绩 体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考 察一个班级的某科 目的考试情况时,是计算全班同 ...

最新文章

  1. TableLayout 表格布局,FrameLaout 帧布局 ,AbsoluteLayout绝对布局的分析
  2. 开源软件:信息共赢和开放心态
  3. php pack、unpack、ord 函数使用方法(二进制流接口应用实例)
  4. 经典SQL短小代码收集汇总
  5. OpenGL ES之基本简介和渲染流程
  6. 超详细设置 Idea 类注释模板和方法注释模板
  7. zabbix 监控 db2_zabbix-第二章-第二节 zabbix添加简单主机监控
  8. C# HttpClient设置cookies的两种办法
  9. jQuery的实现原理
  10. 03. 确保容器中的对象拷贝正确而高效
  11. Linux入门——环境配置
  12. 2022-2027年中国智能硬件行业市场深度分析及发展战略规划报告
  13. NAT 内网穿透原理
  14. 前端js如何实现中文转拼音(重要)
  15. 搜索引擎系统的原理和实践
  16. 2020网络教育计算机统考,2020年9月网络教育统考《计算机应用基础》模拟题8
  17. android 点击跳转到qq,Android应用跳转到手机QQ的方法
  18. 人工智能实验报告 牧师与野人渡河 知识表示方法
  19. 索尼6400夜景测试 镜头索尼18-55
  20. Arduino - PC817C光耦

热门文章

  1. 二、PC连接上tello edu并通过python进行简单控制
  2. 机器视觉OpenCV库基础教程(一)
  3. 【数据分享】第六次、第七次人口普查深圳各街道数据
  4. 用Feed43为任意网站定制RSS feed教程~
  5. 【大数据】数据驱动的大数据金融应用-2017CCTC大会-专题视频课程
  6. BZOJ 4892: [Tjoi2017]DNA(SA+RMQ / SAM)
  7. LeetCode912. 排序数组(JavaScript手撕各种排序算法)
  8. 打怪升级之小白的大数据之旅(七十四)<初识Kafka>
  9. java list 交集 并集 差集 去重复并集
  10. 点牛--当FJ点到一头奶牛时,及时提醒他下一头奶牛的编号就可以了。