C: Расчет расстояния между двумя числами с плавающей запятой по модулю 12

Мне нужна функция dist (a, b) // 0 ≤ a, b <12, который возвращает самое короткое (абсолютное, т. е. + ve) арифметическое расстояние ala clock по модулю 12.

Так, например,

dist( 1, 2 )
 = dist( 2, 1 )
 = dist( 11, 0 )
 = dist( 0, 11 )
 = dist( 0.5, 11.5 )
 = 1

EDIT: в то время как это можно легко сделать с помощью немного взлома, я чувствую, что должно быть какое-то интуитивное решение, может быть, использовать fmod и modulo 6

9
задан P i 31 May 2011 в 20:20
поделиться