Angle Between Hands of a Clock in C++



Suppose we have two numbers, hour and minutes. We have to find a smaller angle (in sexagesimal units) formed between the hour and the minute hand. So if the input is like hour = 12 and min := 30, then the result will be 165°.

To solve this, we will follow these steps −

  • if h = 12, then set h := 0

  • if m = 60, then set m := 0

  • hAngle := 0.5 * (60h) + m

  • mAngle := 6m

  • ret := |hAngle - mAngle|

  • return minimum of ret and (360 – ret)

Example (C++)

Let us see the following implementation to get better understanding −

 Live Demo

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   double angleClock(int h, int m) {
      if(h == 12) h = 0;
      if(m == 60) m = 0;
      double hAngle = 0.5*((60 * h) + m);
      double mAngle = 6 * m;
      double ret = abs(hAngle - mAngle);
      return min(360 - ret, ret);
   }
};
main(){
   Solution ob;
   cout << (ob.angleClock(12, 30));
}

Input

12
30

Output

165.00000

Advertisements