w3resource

C Exercises: Find angle between given hour and minute hands


28. Angle Between Clock Hands Variants

Write a C program to find the angle between the hour and minute hands.

Example:
Input: int ha = 11
         int ma = 30
Output: Angle between hour and minute hands 165

Sample Solution:

C Code:

#include <stdio.h>
#include <math.h>

// Function to calculate the angle between the hour and minute hands of a clock
int calcAngle(int ha, int ma) {
    // Adjusting hour and minute values to avoid errors for ha = 12 and ma = 60
    if (ha == 12) 
        ha = 0; 
    if (ma == 60)  
        ma = 0; 

    // Calculate hour and minute angles based on clock readings
    int hour_angle = (int)(0.5 * (ha * 60 + ma)); // Hour hand angle
    int minute_angle = (int)(6 * ma); // Minute hand angle

    // Calculate the absolute difference between hour and minute angles
    int angle = abs(hour_angle - minute_angle);

    // Calculate the smaller angle between the two possible angles
    int complementary_angle = 360 - angle; // Calculate complementary angle
    return (complementary_angle > angle) ? angle : complementary_angle;
}

int main(void) {
    int ha = 11; // Hour hand position
    printf("\nAngles move by hour hand: %d", ha);
    int ma = 30; // Minute hand position
    printf("\nAngles move by minute hand: %d", ma);

    // Check for invalid inputs and display an error message if detected
    if (ha < 0 || ma < 0 || ha > 12 || ma > 60) {
        printf("\nWrong input..!"); 
    } else {
        // Calculate and display the angle between hour and minute hands
        printf("\nAngle between hour and minute hands: %d", calcAngle(ha, ma)); 	
    }

    return 0;
}

Sample Output:

Angles move by hour hand: 11
Angles move by minute hand: 30
Angle between hour and minute hands 165

Flowchart:

Flowchart: Find angle between given hour and minute hands

For more Practice: Solve these Related Problems:

  • Write a C program to compute the angle between the hour and minute hands for any given time using arithmetic.
  • Write a C program to calculate the smallest angle between clock hands and handle edge cases at 12 o'clock.
  • Write a C program to find the angle between clock hands and display both the smaller and larger angles.
  • Write a C program to compute the angle for multiple times given in an array and output the results.

Go to:


PREV : Multiply Using Bitwise Operators Variants.
NEXT : Minimal Sum of Squares Variants.

C Programming Code Editor:



Improve this sample solution and post your code through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.