这是我的作业:
定义一个结构点有两个成员(x坐标,y坐标)。定义一个包含N个元素的结构数组(每个元素都是一个Point结构变量),并用一些给定的值初始化所有元素。定义一个函数,有两个形式参数:(1)结构数组SA,(2)数组长度N,用于识别并输出两点之间(在数组中所有点对中)的最短距离。使用上述定义的数组和长度作为实际参数调用此函数。
这是我的代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//the struct for point a and b
struct Point
{
double x,y;
};
//fuction to return the distance between two points
double pointDist(struct Point a, struct Point b)
{
return sqrt((a.y - b.y) * (a.y - b.y) + (a.x - b.x) * (a.x - b.x));
}
//function to return the shortest distance
double shortestDist(struct Point SA[], int N)
{
if(N == 1)
{
return -1;
}
double shortestDistance = pointDist(SA[0], SA[1]);
for(int i = 0; i != N-1; ++i)
{
for(int j = i + 1; j != N; ++j)
{
if(shortestDistance > pointDist(SA[i], SA[j]))
{
shortestDistance = pointDist(SA[i], SA[j]);
}
}
}
}
//driver
int main()
{
struct Point SA[4] = {{1,2}, {1,3},{3,1},{2,1}};
printf("The shortest distance between points are %f", shortestDist(SA, 4));
return 0;
}
但最短的距离总是0,我不知道是哪一部分错了。
启用所有编译器警告以节省时间@Lundin
double shortestDist(struct Point SA[], int N) {
...
// Add a final return
return shortestDistance;
}