我計算點之間的距離,如果距離相等,則點使平方,否則不。我的代碼只適用於以下列順序讀取座標A(x,y),B(x,y),C(x,y),D(x,y)或反向的座標。但是,如果我讀這樣的例如A(x,y),B(x,y),D(x,y),C(x,y),它將不起作用,因爲dist方法將計算平方的對角線長度。我怎麼解決這個問題?閱讀4點的座標。他們做廣場嗎?
#include <iostream>
using namespace std;
struct {
int x;
int y;
}a[10];
int dist(int x1, int y1, int x2, int y2)
{
int c1, c2;
c1 = x2-x1;
c2 = y2-y1;
return (c1*c1)+(c2*c2);
}
int main()
{
int d1, d2, d3, d4;
for (int i=1; i<=4; i++)
{
cout << 'X' << i << '='; cin >> a[i].x;
cout << 'Y' << i << '='; cin >> a[i].y;
}
d1 = dist(a[1].x, a[1].y, a[2].x, a[2].y);
d2 = dist(a[2].x, a[2].y, a[3].x, a[3].y);
d3 = dist(a[3].x, a[3].y, a[4].x, a[4].y);
d4 = dist(a[4].x, a[4].y, a[1].x, a[1].y);
if(d1==d2 && d1==d3 && d1==d4)
cout << "Is a square";
else
cout << "Is not a square";
return 0;
}
如果距離相等,你已經有了一個菱形,不一定是正方形:) – Kos
您應該檢查角度/對角線爲好。四個點中的每一個點應該有兩條相同長度的垂直線和一條長度爲sqrt(2 * x * x)'的對角線。 – chris
https://www.codeeval.com/open_challenges/101/ –