大佬们帮我看看,无序输入四个点判断矩形
  • 板块题目总版
  • 楼主KomorKomor
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/25 14:42
  • 上次更新2023/11/25 16:18:21
查看原帖
大佬们帮我看看,无序输入四个点判断矩形
1106289
KomorKomor楼主2023/11/25 14:42
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    double s[10001][8]={0.0}; 
    int temp=0,o[10001]={0};
    double k[6]={0},d1,d2,d3,d4;
    int t;
    double a,b;
    cin>>t;
    for(int i=0;i<t;i++)
    {
   
        cin>>s[i][0]>>s[i][1]>>s[i][2]>>s[i][3]>>s[i][4]>>s[i][5]>>s[i][6]>>s[i][7];
        a=1.0*(s[i][0]+s[i][2]+s[i][4]+s[i][6])/4;          //计算各点横坐标之和 
        b=1.0*(s[i][1]+s[i][3]+s[i][5]+s[i][7])/4;          //计算各点纵坐标之和 
        d1=(a-s[i][0])*(a-s[i][0])+(b-s[i][1])*(b-s[i][1]);
        d2=(a-s[i][2])*(a-s[i][2])+(b-s[i][3])*(b-s[i][3]);
        d3=(a-s[i][4])*(a-s[i][4])+(b-s[i][5])*(b-s[i][5]);
        d4=(a-s[i][6])*(a-s[i][6])+(b-s[i][7])*(b-s[i][7]);
        k[0]=(s[i][0]-s[i][2])*(s[i][0]-s[i][2])+(s[i][1]-s[i][3])*(s[i][1]-s[i][3]);
        k[1]=(s[i][2]-s[i][4])*(s[i][2]-s[i][4])+(s[i][3]-s[i][5])*(s[i][3]-s[i][5]);
        k[2]=(s[i][4]-s[i][6])*(s[i][4]-s[i][6])+(s[i][5]-s[i][7])*(s[i][5]-s[i][7]);
        k[3]=(s[i][6]-s[i][0])*(s[i][6]-s[i][0])+(s[i][7]-s[i][1])*(s[i][7]-s[i][1]);
        k[4]=(s[i][0]-s[i][4])*(s[i][0]-s[i][4])+(s[i][1]-s[i][5])*(s[i][1]-s[i][5]);
        k[5]=(s[i][2]-s[i][6])*(s[i][2]-s[i][6])+(s[i][3]-s[i][7])*(s[i][3]-s[i][7]);

        for(int j=0;j<5;j++)    //排序边长 
        {
            for(int h=0;h<5-j;h++)
            {
                if(k[h]>k[h+1])
                {
                    temp=k[h],k[h]=k[h+1],k[h+1]=temp;
                }
            }
        }

         if(d1==d2&&d2==d3&&d3==d4) //如果点(a,b)到四个顶点距离相等,那么就是矩形 
         {
           if(k[0]==k[1]&&k[2]==k[1]&&k[3]==k[2]) o[i]=1;
           else o[i]=2;
	     }
	     else o[i]=3;
        memset(k,0,sizeof(k)); 
    }  
    for(int i=0;i<t;i++)
    {
        if(o[i]==1) cout<<"square";
        else if(o[i]==2) cout<<"rectangle";
        else cout<<"no";
        if(i!=t-1) cout<<endl; 
    }
    return 0;
}
2023/11/25 14:42
加载中...