无序输入四个点的坐标,判断矩形,大佬请看下面我的做法哪里错了```cpp #include #include using namespace std;
int main() { int s[10001][8]={0},temp=0,o[10001]={0}; int 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)
{
if(k[0]==k[1]&&k[2]==k[1]&&k[3]==k[2]) o[i]=0;
else o[i]=1;
}
else o[i]=2;
memset(k,0,sizeof(k));
}
for(int i=0;i<t;i++)
{
if(o[i]==0) cout<<"square";
else if(o[i]==1) cout<<"rectangle";
else cout<<"no";
if(i!=t-1) cout<<endl;
}
return 0;
}