参考博客https://blog.csdn.net/yangkunpengD/article/details/51329115
对其进行了修改,思路大致一样。

判断方法:三个条件同时满足(1:四条边相等,2:边不为0,3:有一个直角)

思路:
(1)确定点。
对点进行排序,固定四个点的序号
注:排序时,按横坐标或者纵坐标升序、降序可以随便排列组合,都没有问题。
如:

bool cmp(point a, point b)
{if (a.x != b.x)return a.x < b.x; //如果,横坐标不相等,所有点按横坐标升序排列return a.y < b.y;//如果横坐标相等,所有点按纵坐标升序排列
}

或者

bool cmp(point a, point b)
{if (a.y != b.y)return a.y > b.y; //如果,纵坐标不相等,所有点按纵坐标降序排列return a.x < b.x;//如果纵坐标相等,所有点按横坐标升序排列
}

(2)确定边。
计算边长。
(3)判断是否为正方形
判断方法:三个条件同时满足(1:四条边相等,2:边不为0,3:有一个直角)

代码如下:

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;struct point
{double x, y;
} a[4];bool cmp(point a, point b)
{if (a.x != b.x)return a.x < b.x; //如果,横坐标不相等,所有点按横坐标升序排列return a.y < b.y;//如果横坐标相等,所有点按纵坐标升序排列
}double TwoPointDiatance(point a, point b)//计算两点之间的距离
{return sqrt(pow((a.x - b.x), 2) + pow((a.y - b.y), 2));
}bool IsRightAngle(point a, point b, point c)//判断是否为直角
{double x;x = (a.x - b.x)* (a.x - c.x) + (a.y - b.y)*(a.y - c.y);if (x < 0.00001)return 1;elsereturn 0;
}int main()
{int t, k;double s1, s2, s3, s4;cout << "请输入您想要玩的次数: ";cin >> t;cout << "输入4个点的坐标:" << endl;while (t--){for (int i = 0; i < 4; i++)cin >> a[i].x >> a[i].y;//确定点,排序,给点确定标号sort(a, a + 4, cmp);//确定边s1 = TwoPointDiatance(a[0], a[2]);s2 = TwoPointDiatance(a[0], a[1]);s3 = TwoPointDiatance(a[3], a[1]);s4 = TwoPointDiatance(a[2], a[3]);//分析是否为正方形if (s1 == s2&&s3 == s4&&s1 != 0 && IsRightAngle(a[0], a[1], a[2]))//三个条件同时满足(1:四条边相等,2:边不为0,3:有一个直角)cout << "Yes" << endl;elsecout << "No" << endl;cout << "还剩 " << t << " 次。" << endl;cout << "输入4个点的坐标:" << endl;}return 0;
}
/*
几组正方形测试坐标:
0 1 1 1 1 0 0 00 2 3 -2 -1 -5 -4 -10 4 4 7 7 3 3 00 1 1 6 5 0 6 5
*/

关于**“直角边中三个点是如何选择的?”“正方形四条边中四个点是如何选择的?”**,
请阅读我的另一篇博客: C++判断四个点能否构成正方形(续)

C++判断四个点能否构成正方形相关推荐

  1. 判断四个点是不是组成正方形

    判断四个点是不是组成正方形 给出几组数,每组的第一行为横坐标,第二行为纵坐标.看其是否组成正方形 代码 #coding=utf-8 import sys if __name__ == "__ ...

  2. c语言长和宽判断是否是正方形,C++ 如何判断四个点是否构成正方形

    判断方法分为两步: 1.判断四条边是否相等: 2.判断是否有一个角为直角: 求解两点之前距离的函数: double Distance(int x1,int y1,int x2,int y2){ ret ...

  3. [编程]C++判断四个点能否构成正方形

    方法一: 判断方法:三个条件同时满足(1:四条边相等,2:边不为0,3:有一个直角) https://blog.csdn.net/qq_29567701/article/details/7967673 ...

  4. C++判断四个点能否构成正方形/矩阵

    判断正方形方法:三个条件同时满足(1:四条边相等,2:边不为0,3:有一个直角) 判断矩形的话就是条件1变为有2对边相等 #include<iostream> #include<al ...

  5. c语言判断四个坐标点正方形,四个坐标点判断是否为正方形

    四个坐标点判断是否为正方形 在做ACM题目的时候,遇到了要求输入四个点的坐标,然后判断这四个点能否构成一个正方形.这个看似很简单,但细节方面还是有许多问题的.我想的方法很容易理解,而且一次就AC了. ...

  6. 判断四个点是否能构成正方形

    代码: #include<iostream> #include<algorithm> #include<cmath> using namespace std;str ...

  7. 判断四个点是否能形成正方形

    先贴上模板代码 struct node{double x,y; }; double getdis(node a,node b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y ...

  8. java enum判断_Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)

    packagecom.miracle.luna.lambda;importjava.util.Arrays;/*** @Author Miracle Luna * @Date 2019/6/9 23: ...

  9. java通过减治法判断四个数能否生成24点问题

    思路: 一开始我们随机生成四个数字A.B.C.D,选择其中任意一个数字,暂记为A: 将A和B.C.D进行加减乘除运算,并把结果存储起来: 由于每次都是选择的两张牌,并且最后运算出的结果都是一张牌,所以 ...

最新文章

  1. 收敛速度更快更稳定的Wasserstein GAN(WGAN)
  2. 批量单变量求解 office wps 单变量求解比较
  3. DirectX11 初探XMVECOTRXMMATRIX
  4. RTP/RTCP协议介绍
  5. 为Lucene选择快速唯一标识符(UUID)
  6. vue点击按钮上传图片_关于javascript:Vue-点击按钮提交表单
  7. 从程序员到上市公司合伙人,怎么少踩坑?
  8. android system.img编译,快速编译system.img和boot.img的方法
  9. python语言与c语言相比在分支结构上有什么不同,python 基础教程之语法篇章——一小时入门python__对比python与C语言的语法异同...
  10. sql重命名数据库_为什么要为SQL单元测试巧妙地命名数据库对象
  11. 如何杀死远程服务器到本机的tcp连接
  12. 万年历c语言编程怎么做,用C语言如何编写“万年历”
  13. 10.数据库-Pandas
  14. 电源 PFC(功率因数校正)电路拓扑,共计100多份,内含A PFC,连续断续,交错,维也纳,各功率段的PFC电路,还有电感 设计选型
  15. 数商云:打造B2B大宗电商供应链服务系统,落地产业互联网
  16. 清华大学计算机专业辅修课程,清华大学计算机应用专业-辅修专业
  17. JAVA网络协同办公自动化
  18. 计算机硬件 OR CX 1,计算机硬件复习提纲
  19. 坚果云 linux程序名称,备份Linux系统数据到坚果云
  20. ios-自定义Storyboard与UIViewController

热门文章

  1. 联想小工具之----一键关闭防火墙
  2. IBM Thinkpad 相关软件详解
  3. Qt QWindowsBackingStore::flush: GetDC failed (句柄无效)
  4. 国产COS操作系统与“核高基”重大软件专项有无关联?
  5. 路面裂缝检测识别系统设计
  6. 加拿大安省G1考试经验分享
  7. e影浏览器怎么样e影浏览器下载
  8. linux 内核round-robin scheduler代码,用LVS构架负载均衡Linux集群系统 linux lvs
  9. 关于微博开放平台Oauth2.0接入网站应用
  10. 简约小巧的双口充电器,兼容性也很出色,南卡20WPD充电器上手