2014年2月1日 星期六

579 - ClockHands

在一般的時鐘上通常有兩根指針:時針、分針。這個題目是告訴你幾點幾分,請你的程式回應時針和分針之間的角度。請注意:所有的角度請回應最小的正角度。例如:9:0090度,不是 -90度,也不是270度。 
Input                                                                           
輸入是一連串的時間,每個時間一行,以下列的格式出現: H:M

1<= H <= 12         00<= M <=59

如果時間是0:00代表輸入結束了。請注意:H可能是12位數,M則總是以2位數出現.。(也就是你在一般電子錶上看到的模式。)
Output                                                                         
請輸出對應輸入時間的時針和分針間的最小正角度。此角度應該介於0180度。每個輸出單獨一行。每個輸出至小數點以下第三位。 
Sample Iutput                                                           
12:00
9:00
8:10
0:00
 
Sample Output                                                           
0.000
90.000
175.000
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
float add(int M)
{
    return M * 0.5; //時針每分鐘增加0.5度 
}
float change(int M)
{
      return M * 6; //分針每分鐘增加6 
}

int main()
{
    int H,M;
    
    scanf("%d:%d",&H,&M);
    if(1<=H<=12 && 00<=M<=59)
    {
      float h,m;
      float n;
      m = change(M);             //轉換成度 
      h = change(H*5);           //先轉成分鐘再轉換成度
      h += add(M);
      n = h - m;
      n = fabs(n);               //絕對值 
      if(n < 180)
      {
        printf("%0.3f",n);
      }
      else
      {
        printf("%0.3f",360-n);
      }
    }
    system("pause");
    return 0;
}

沒有留言:

張貼留言