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