我正在尝试创建一个程序,使用户输入 对xy坐标。程序必须使用(0,0)中的三个最远点作为三角形的顶点。程序必须输出三角形的区域。我知道它的公式但我在从(0,0)获得三个最远点时遇到了麻烦。
这里我有一个代码,用于按升序排序x坐标。如何对这些对进行排序并得到三个最远点? 或者有没有更好的方法来制作这个节目?
int main() {
int x, a, b, t;
cin >> a; // a pairs of x and y
int xcoor[a], ycoor[a];
for (x = 1; x <= a; x++)
{
//enter coordinates
cin >> xcoor[x] >> ycoor[x];
}
for (x = 0; x < a; x++)
{
for (int y = 0; y < a - 1; y++)
{
if (xcoor[y] > xcoor[y + 1])
{
t = xcoor[y];
xcoor[y] = xcoor[y + 1];
xcoor[y + 1] = t;
}
}
}
return 0;
}
答案 0 :(得分:0)
您可以定义一个定义坐标的struct Point
,而不是两个分开的变量。
如果点上operator<
表示距离中心的距离,则可以使用std::sort
对Point
的数组/向量进行排序。
类似的东西:
struct Point {
int x, y;
bool operator<(const Point& src) const
{ return x*x + y*y < src.x*src.x + src.y*src.y; // or anything else
}
};
int main() {
int x,a,b,t;
cin>>a; // a pairs of x and y
Point point[a]; // be careful, it is a gcc extension since a is not a compilation constant
for (x=0; x<a; x++) // be careful, arrays in C/C++ starts from 0!
{
//enter coordinates
cin>>point[x].x>>point[x].y;
}
std::sort(&point[0], &point[a]);
return 0;
}
帮助您找到最远的三个点。
答案 1 :(得分:0)