# Calculate the angle between hour hand and minute hand

This problem is know as Clock angle problem where we need to find angle between hands of an analog clock at a given time.

Examples:

```Input:  h = 12:00, m = 30.00
Output: 165 degree

Input:  h = 3.00, m = 30.00
Output: 75 degree
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

The idea is to take 12:00 (h = 12, m = 0) as a reference. Following are detailed steps.

1) Calculate the angle made by hour hand with respect to 12:00 in h hours and m minutes.
2) Calculate the angle made by minute hand with respect to 12:00 in h hours and m minutes.
3) The difference between two angles is the angle between two hands.

How to calculate the two angles with respect to 12:00?
The minute hand moves 360 degree in 60 minute(or 6 degree in one minute) and hour hand moves 360 degree in 12 hours(or 0.5 degree in 1 minute). In h hours and m minutes, the minute hand would move (h*60 + m)*6 and hour hand would move (h*60 + m)*0.5.

## C/C++

```// C program to find angle between hour and minute hands
#include <stdio.h>
#include <stdlib.h>

// Utility function to find minimum of two integers
int min(int x, int y) { return (x < y)? x: y; }

int calcAngle(double h, double m)
{
// validate the input
if (h <0 || m < 0 || h >12 || m > 60)
printf("Wrong input");

if (h == 12) h = 0;
if (m == 60) m = 0;

// Calculate the angles moved by hour and minute hands
// with reference to 12:00
int hour_angle = 0.5 * (h*60 + m);
int minute_angle = 6*m;

// Find the difference between two angles
int angle = abs(hour_angle - minute_angle);

// Return the smaller angle of two possible angles
angle = min(360-angle, angle);

return angle;
}

// Driver program to test above function
int main()
{
printf("%d n", calcAngle(9, 60));
printf("%d n", calcAngle(3, 30));
return 0;
}
```

## Java

```// Java program to find angle between hour and minute hands
import java.io.*;

class GFG
{
// Function to calculate the angle
static int calcAngle(double h, double m)
{
// validate the input
if (h <0 || m < 0 || h >12 || m > 60)
System.out.println("Wrong input");

if (h == 12)
h = 0;
if (m == 60)
m = 0;

// Calculate the angles moved by hour and minute hands
// with reference to 12:00
int hour_angle = (int)(0.5 * (h*60 + m));
int minute_angle = (int)(6*m);

// Find the difference between two angles
int angle = Math.abs(hour_angle - minute_angle);

// smaller angle of two possible angles
angle = Math.min(360-angle, angle);

return angle;
}

// Driver program
public static void main (String[] args)
{
System.out.println(calcAngle(9, 60)+" degree");
System.out.println(calcAngle(3, 30)+" degree");
}
}

// Contributed by Pramod Kumar

```

## Python

```# Python program to find angle
# between hour and minute hands

# Function to Calculate angle b/w
# hour hand and minute hand
def calcAngle(h,m):

# validate the input
if (h < 0 or m < 0 or h > 12 or m > 60):
print('Wrong input')

if (h == 12):
h = 0
if (m == 60):
m = 0

# Calculate the angles moved by
# hour and minute hands with
# reference to 12:00
hour_angle = 0.5 * (h * 60 + m)
minute_angle = 6 * m

# Find the difference between two angles
angle = abs(hour_angle - minute_angle)

# Return the smaller angle of two
# possible angles
angle = min(360 - angle, angle)

return angle

# Driver program
h = 9
m = 60
print('Angle ', calcAngle(h,m))

# This code is contributed by Danish Raza
```

Output:
```90
75```

Exercise: Find all times when hour and minute hands get superimposed.

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
2.5 Average Difficulty : 2.5/5.0
Based on 58 vote(s)