我使用harvesine公式计算了两个坐标之间的距离和它们之间的角度,我想得到指南针的方向,但我有问题,我发现这个代码得到方向,但我不能得到索引。 请帮助修复这部分
int degree = 30;
char cordNames [] = {'N', 'NE', 'E', 'SE"]', 'S', 'SW', 'W', 'NW', 'N'};
int coordinateIndex = floor(((degree-22.5)%360)/45);
if(coordinateIndex <0)
{
coordinateIndex=coordinateIndex+8;
}
result = directions[index+1];
答案 0 :(得分:1)
这里有各种各样的错误。您引用了从未定义过的result
,directions
和index
;你不能有两个字母的字符变量,你必须使用C风格的字符串(字符数组),即一个数组中的数组,例如:
const char *coord_names[] = { "N", "NE", "E", "SE", "S", "SW", "W", "NW", "N" };
同样在你的int coordinate_index = floor(((degree - 22.5) % 360) / 45);
行,这是不正确的C并且不会编译; %
模运算符仅适用于整数;你的degree - 22.5
会自动返回一个double,所以你必须使用fmod()
函数代替或使用cast函数或者使用floor函数或者类似函数(你很可能想要fmod()
尽管??我&#39 ;我不确定)degree - 22.5
。
当然,我确定您已经#include
<math.h>
,但请确保您不要忘记与-lm
建立关联以链接到数学库(适用于floor()
,如果您选择使用fmod()
)。