How to find the Angle between the hour hand and minute hand in C++
In this tutorial, we will learn to get or find the angle between the hour hand and minute hand in C++. Also, we say this problem as analog clock angle problem where we have to find the angle between the hands of a clock at a given time.
For Example:
- Given Input: h = 6:00, m = 60.00
- Output: 180 degree
Now, we will take 12:00 where h = 12 and m = 0 as a reference.
Hence, these are the following steps.
- Now, we will get the angle between the hour hand and reference time 12:00 whereas time will be in h hours and m minutes.
- Then, we will get the angle between the minute hand and reference time 12:00.
- Finally, the difference between these two angles is the angle between the minute hand and hour hand.
So, here the question arises, how to get the angle with respect to 12:00?
How to get the angle with respect to 12:00?
- As we know, the minute hand will move by 360 degrees in 60 minutes or we can say 6 degrees in one minute.
- And the hour hand will move by 360 degrees in 12 hours or we can say 0.5 degrees in one minute.
- According to this, the minute hand will move by (h*60 + m)*6 and hour hand will move by (h*60 + m)*0.5.
You may also like:
Convert 24-hour format to 12-hour format in C++
Angle between the hour hand and minute hand
Hence, below is the implementation of the above approach.
#include<iostream> #include <bits/stdc++.h> using namespace std; //find minimum of two integers int min(int a, int b) { return (a < b)? a:b; } int calculateangle(double H, double M) { // validate if (H <0 || M < 0 || H >12 || M > 60) cout<<"input is wrong "; if (H == 12) H = 0; if (M == 60) M = 0; // Calculate the angles int hourangle = 0.5 * (H * 60 + M); int minangle = 6 * M; // Find the difference int angdiff = abs(hourangle - minangle); // Return the smaller angle of two possible angles angdiff = min(360 - angdiff, angdiff); return angdiff; } int main() { cout << calculateangle(6, 60) << endl; cout << calculateangle(7, 30) << endl; return 0; }
Output Explanation:
OUTPUT: 180 45
You may also read:
Leave a Reply