統一以 12 點為基準去計算角度:
分針走一格 => 1 min => 時針走 0.5 度
時鐘上一格 6 度。
ex: 8:10
(先不考慮分針對時針的影響)
hour : 8 -> 8 * 5 * 6 = 240 度
min : 10 -> 10* 6 = 60 度 => hour : 240 + 10 * 0.5 = 245 度
245 - 60 = 185 (轉換成最小正角度) => 360 - 185 = 175 度
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void){
int h,m;
char input[10]={0};
double degree,hD,mD;
while(fgets(input,10-1,stdin)!=NULL){
sscanf(input,"%d:%d",&h,&m);
if(!h&&!m) break;
/* convert to degree */
mD=m*6;
hD=h*5*6+m*0.5;
degree=fabs(hD-mD);
if(degree > 180)
degree = 360 - degree;
printf("%.3lf\n",degree);
}
return 0;
}
沒有留言:
張貼留言