C++ 如何判断四个点是否构成正方形

判断四个点是否构成正方形是一个常见的问题,可以使用数学方法进行判断,也可以利用C++语言编写代码对四个点进行判断。

一、使用数学方法进行判断

如果四个点能构成正方形,那么它们应该满足以下条件:

  1. 四个点的四条边相等。

  2. 对角线相等。

  3. 两条对边之间的角度均为90度。

如果以上条件都满足,则四个点能构成正方形。

二、利用C++语言编写代码进行判断

以下是C++代码示例:

#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;

struct Point 
{
    int x;
    int y;
};

bool isSquare(Point A, Point B, Point C, Point D) 
{
    Point temp[4] = { A,B,C,D };
    sort(temp, temp + 4, [](Point &a, Point &b)->bool { return a.x < b.x || (a.x == b.x && a.y < b.y); });
    double d1 = sqrt((temp[0].x - temp[3].x) * (temp[0].x - temp[3].x) + (temp[0].y - temp[3].y) * (temp[0].y - temp[3].y));
    double d2 = sqrt((temp[1].x - temp[2].x) * (temp[1].x - temp[2].x) + (temp[1].y - temp[2].y) * (temp[1].y - temp[2].y));
    double d3 = sqrt((temp[0].x - temp[1].x) * (temp[0].x - temp[1].x) + (temp[0].y - temp[1].y) * (temp[0].y - temp[1].y));
    double d4 = sqrt((temp[1].x - temp[3].x) * (temp[1].x - temp[3].x) + (temp[1].y - temp[3].y) * (temp[1].y - temp[3].y));
    double d5 = sqrt((temp[2].x - temp[3].x) * (temp[2].x - temp[3].x) + (temp[2].y - temp[3].y) * (temp[2].y - temp[3].y));

    if (d1 == d2 && d2 == d3 && d3 == d4 && d4 == d1 && d5*d5 == d1 * d1 + d2 * d2) 
    {
        return true;
    }
    else 
    {
        return false;
    }
}

int main() 
{
    Point A = { 0,0 };
    Point B = { 0,2 };
    Point C = { 2,0 };
    Point D = { 2,2 };

    if (isSquare(A, B, C, D)) 
    {
        cout << "四个点可以构成一个正方形" << endl;
    }
    else 
    {
        cout << "四个点不能构成一个正方形" << endl;
    }

    return 0;
}

在此程序中,我们首先定义了一个结构体Point来表示一个点的坐标,然后定义了一个函数 isSquare 来判断四个点是否能构成正方形。由于四个点的顺序不一定是固定的,因此我们需要先对四个点进行排序,根据横坐标和纵坐标的大小进行排序。然后分别计算四条边的长度以及两条对角线的长度,最后判断四个边长是否相等,并且对角线长度是否相等即可。如果满足条件,返回true,否则返回false。

请看以下示例:

例1:

输入:
Point A = { 0,0 };
Point B = { 0,2 };
Point C = { 2,0 };
Point D = { 2,2 };
输出:
四个点可以构成一个正方形

例2:

输入:
Point A = { 0,0 };
Point B = { 0,4 };
Point C = { 2,0 };
Point D = { 2,2 };
输出:
四个点不能构成一个正方形

以上就是C++如何判断四个点是否构成正方形的攻略,希望能帮助到您。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 如何判断四个点是否构成正方形 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Visual C++ 中的ODBC编程的介绍

    Visual C++ 中的ODBC编程的介绍 什么是ODBC? ODBC全称是Open Database Connectivity,即开放数据库连接,是微软公司提出的一种面向关系型数据库的连接规范,基于ODBC开发的应用程序可以访问各种类型的数据库。 ODBC编程的步骤 加载ODBC驱动程序。 建立连接并打开数据库。 执行SQL语句。 获取执行结果。 断开连…

    C 2023年5月22日
    00
  • C语言编程题杨氏矩阵算法快速上手示例详解

    C语言编程题杨氏矩阵算法快速上手示例详解 概述 本篇攻略详细讲解了使用C语言编写杨氏矩阵算法的方法,包括算法原理、步骤、时间复杂度、优缺点等内容,并提供了两个实例,以帮助读者更快更深入地掌握该算法。 算法原理 杨氏矩阵是指一个二维数组,满足以下两个条件: 每行数据从左到右递增; 每列数据从上到下递增。 杨氏矩阵算法的核心思想是通过逐行逐列地比较来快速查找目标…

    C 2023年5月22日
    00
  • C++ main函数的几点细节

    下面是对于 “C++ main函数的几点细节” 的详细解释: 1. main函数的返回值类型 在C++中 main 函数一般定义为 int main() 或 int main(int argc, char* argv[])。其中,int指定了 main 函数的返回值类型,表示程序的执行结果是否成功。通常情况下,程序执行成功时返回0,否则返回一个非零值。 下面…

    C 2023年5月22日
    00
  • Vue element ui用户展示页面的实例

    下面我将为你详细讲解“Vue element ui用户展示页面的实例”的完整攻略。 1. 环境配置 在开始使用Vue element ui之前,需要先进行环境配置。具体操作步骤如下: 安装Node.js:在Node.js官网下载对应系统的安装包,安装完成后,在命令行中输入node -v查看是否安装成功; 安装Vue CLI:在命令行中输入npm instal…

    C 2023年5月23日
    00
  • python实现计算倒数的方法

    下面是Python实现计算倒数的方法的攻略: 1. 计算倒数的方法 在Python中,可以通过对数学库math中的函数进行调用,来计算倒数。常用的计算倒数的函数有两个:reciprocal和pow。 reciprocal函数 reciprocal函数是math库中的一个函数,用于计算一个数的倒数。它的使用方法如下: import math num = 3 r…

    C 2023年5月22日
    00
  • 2017电视盒子排行榜,年度最畅销的五大旗舰

    2017电视盒子排行榜,年度最畅销的五大旗舰 随着网络时代的到来,各种智能设备在人们的生活中越来越普及,其中最受欢迎的无疑是电视盒子。2017年是智能电视盒子快速发展的一年,各大品牌纷纷推出了旗舰产品,经过消费者的考验,下面是2017年度最畅销的五大旗舰电视盒子排行榜: 小米盒子 创维盒子 天猫魔盒 极米盒子 海美迪盒子 1. 小米盒子 小米盒子采用了小米自…

    C 2023年5月22日
    00
  • C++中的const限定符的使用和作用

    C++中的const限定符的使用和作用 为什么需要const? 在编程过程中,我们有时需要将一个变量的值设置为不可修改的,这时就需要使用const关键字。使用const限定符可以有效提高代码的可读性和安全性。 const的基本用法 在C++中,使用const关键字可以定义不可变变量。 const int a = 10; 上述代码定义了一个常量a,它的值为10…

    C 2023年5月22日
    00
  • Java异常链表throw结构assert详细解读

    请看下面的详细讲解: Java异常链 Java中的异常链是指,当一个异常被抛出时,可能会引发另一个异常。这个被引发的异常可以包含原始异常的信息。这种机制称为异常链。 在Java中,异常链可以通过调用getCause()方法来获得。该方法返回一个Throwable对象,该对象是造成当前异常的原因。如果没有原因,则返回null。 public class Exc…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部