C++判断四个点能否构成正方形
参考博客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++判断四个点能否构成正方形相关推荐
- 判断四个点是不是组成正方形
判断四个点是不是组成正方形 给出几组数,每组的第一行为横坐标,第二行为纵坐标.看其是否组成正方形 代码 #coding=utf-8 import sys if __name__ == "__ ...
- c语言长和宽判断是否是正方形,C++ 如何判断四个点是否构成正方形
判断方法分为两步: 1.判断四条边是否相等: 2.判断是否有一个角为直角: 求解两点之前距离的函数: double Distance(int x1,int y1,int x2,int y2){ ret ...
- [编程]C++判断四个点能否构成正方形
方法一: 判断方法:三个条件同时满足(1:四条边相等,2:边不为0,3:有一个直角) https://blog.csdn.net/qq_29567701/article/details/7967673 ...
- C++判断四个点能否构成正方形/矩阵
判断正方形方法:三个条件同时满足(1:四条边相等,2:边不为0,3:有一个直角) 判断矩形的话就是条件1变为有2对边相等 #include<iostream> #include<al ...
- c语言判断四个坐标点正方形,四个坐标点判断是否为正方形
四个坐标点判断是否为正方形 在做ACM题目的时候,遇到了要求输入四个点的坐标,然后判断这四个点能否构成一个正方形.这个看似很简单,但细节方面还是有许多问题的.我想的方法很容易理解,而且一次就AC了. ...
- 判断四个点是否能构成正方形
代码: #include<iostream> #include<algorithm> #include<cmath> using namespace std;str ...
- 判断四个点是否能形成正方形
先贴上模板代码 struct node{double x,y; }; double getdis(node a,node b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y ...
- java enum判断_Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)
packagecom.miracle.luna.lambda;importjava.util.Arrays;/*** @Author Miracle Luna * @Date 2019/6/9 23: ...
- java通过减治法判断四个数能否生成24点问题
思路: 一开始我们随机生成四个数字A.B.C.D,选择其中任意一个数字,暂记为A: 将A和B.C.D进行加减乘除运算,并把结果存储起来: 由于每次都是选择的两张牌,并且最后运算出的结果都是一张牌,所以 ...
最新文章
- 收敛速度更快更稳定的Wasserstein GAN(WGAN)
- 批量单变量求解 office wps 单变量求解比较
- DirectX11 初探XMVECOTRXMMATRIX
- RTP/RTCP协议介绍
- 为Lucene选择快速唯一标识符(UUID)
- vue点击按钮上传图片_关于javascript:Vue-点击按钮提交表单
- 从程序员到上市公司合伙人,怎么少踩坑?
- android system.img编译,快速编译system.img和boot.img的方法
- python语言与c语言相比在分支结构上有什么不同,python 基础教程之语法篇章——一小时入门python__对比python与C语言的语法异同...
- sql重命名数据库_为什么要为SQL单元测试巧妙地命名数据库对象
- 如何杀死远程服务器到本机的tcp连接
- 万年历c语言编程怎么做,用C语言如何编写“万年历”
- 10.数据库-Pandas
- 电源 PFC(功率因数校正)电路拓扑,共计100多份,内含A PFC,连续断续,交错,维也纳,各功率段的PFC电路,还有电感 设计选型
- 数商云:打造B2B大宗电商供应链服务系统,落地产业互联网
- 清华大学计算机专业辅修课程,清华大学计算机应用专业-辅修专业
- JAVA网络协同办公自动化
- 计算机硬件 OR CX 1,计算机硬件复习提纲
- 坚果云 linux程序名称,备份Linux系统数据到坚果云
- ios-自定义Storyboard与UIViewController
热门文章
- 联想小工具之----一键关闭防火墙
- IBM Thinkpad 相关软件详解
- Qt QWindowsBackingStore::flush: GetDC failed (句柄无效)
- 国产COS操作系统与“核高基”重大软件专项有无关联?
- 路面裂缝检测识别系统设计
- 加拿大安省G1考试经验分享
- e影浏览器怎么样e影浏览器下载
- linux 内核round-robin scheduler代码,用LVS构架负载均衡Linux集群系统 linux lvs
- 关于微博开放平台Oauth2.0接入网站应用
- 简约小巧的双口充电器,兼容性也很出色,南卡20WPD充电器上手