最远距离(C++实现)
给定一组点(x,y),求距离最远的两个点之间的距离。
输入
第一行是点数n(n大于等于2),接着每一行代表一个点,由两个浮点数x,y组成。
输出
输出一行是最远两点之间的距离。
样例输出
6
34.0 23.0
28.1 21.6
14.7 17.1
17.0 27.2
34.7 67.1
29.3 65.1
样例输出
53.8516
参考程序
//Data:7/18/2017
//Writen by Yuxin Liu
#include <iostream>
#include <iomanip>
using namespace std;
double dis(double (*)[2], double (*)[2]);//函数声明,计算每两个点的距离
int main()
{
int n;
cin >> n;
double a[10][2];//二维数组的形式存储坐标点
double result[50];//存储任意两点之间的距离
//输入
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 2; j++)
{
cin >> a[i][j];
}
}
//同时将每个坐标点的x,y值,以地址的形式传递给p和q
double (*p)[2];
p= &a[0];
double (*q)[2];
q= &a[0];
//遍历每个坐标点,求距离
for (int i = 0; i < n; i++)
{
for (int j = 0; j< n; j++)
{
result[i*n+j] = dis(p,q);
q = q + 1;
}
p = p + 1;
q = &a[0];
}
//判断最大值,并输出
double max = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << fixed << setprecision(4) << result[i*n + j] << endl;
if (result[i*n + j]>max)
max = result[i*n + j];
}
}
cout << fixed << setprecision(4) << max << endl;
return 0;
}
//两点之间距离函数的定义
double dis(double (*b)[2], double (*c)[2])
{
double distance = 0;
distance = sqrt((b[0][0] - c[0][0])*(b[0][0] - c[0][0]) + (b[0][1] - c[0][1])*(b[0][1] - c[0][1]));
return distance;
}