C:计算12浮点数12之间的距离

我需要一个函数dist(a,b)//0≤a,b< 12使用模12返回最短(绝对的)距离ala时钟算术. 所以,例如,
dist( 1,2 )
 = dist( 2,1 )
 = dist( 11,0 )
 = dist( 0,11 )
 = dist( 0.5,11.5 )
 = 1

编辑:虽然这可以通过一些黑客攻击轻松完成,我觉得必须有一些直观的解决方案,可能使用fmod和modulo 6

解决方法

首先,最佳解决方案是非常重要的,需要一点思考.
float distMod12(float a,float b)
{
    float diff = fabs( b - a );
    return ( diff < 6 ) ? diff : 12 - diff;
}

编辑:或者,

return MIN( diff,12 - diff ); // needs a MIN function

完整代码列表:http://ideone.com/XxRIw

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...