Рубрики

Рассчитайте угол между часовой стрелкой и минутной стрелкой

Эта проблема известна как проблема угла наклона часов, где нам нужно найти угол между стрелками аналоговых часов в данный момент времени.

Примеры:

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

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

Идея состоит в том, чтобы взять 12:00 (h = 12, m = 0) в качестве ссылки. Ниже приведены подробные шаги.

1) Рассчитайте угол наклона часовой стрелки относительно 12:00 в часах и метрах в часах.
2) Рассчитайте угол, на который указывает минутная стрелка, относительно 12:00 в часах и м минутах.
3) Разница между двумя углами — это угол между двумя руками.

Как рассчитать два угла относительно 12:00?
Минутная стрелка движется на 360 градусов за 60 минут (или на 6 градусов за одну минуту), а часовая стрелка смещается на 360 градусов за 12 часов (или на 0,5 градуса за 1 минуту). Через h часов и m минут минутная стрелка будет двигаться (h * 60 + m) * 6, а часовая стрелка будет двигаться (h * 60 + m) * 0.5.

C ++

// C ++ программа для поиска угла между часовой и минутной стрелками
#include <bits/stdc++.h>

using namespace std;

  
// Сервисная функция, чтобы найти минимум двух целых

int min(int x, int y) 

    return (x < y)? x: y; 

      

  

int calcAngle(double h, double m) 

    // проверяем ввод

    if (h <0 || m < 0 || h >12 || m > 60) 

        printf("Wrong input"); 

  

    if (h == 12) h = 0; 

    if (m == 60) m = 0; 

  

    // Рассчитаем углы сдвига

    // часовой и минутной стрелками

    // со ссылкой на 12:00

    int hour_angle = 0.5 * (h * 60 + m); 

    int minute_angle = 6 * m; 

  

    // Находим разницу между двумя углами

    int angle = abs(hour_angle - minute_angle); 

  

    // Возвращаем меньший угол из двух возможных углов

    angle = min(360 - angle, angle); 

  

    return angle; 

  
// Программа драйвера для проверки вышеуказанной функции

int main() 

    cout << calcAngle(9, 60) << endl; 

    cout << calcAngle(3, 30) << endl; 

    return 0; 

  
// Это код, предоставленный rathbhupendra

С

// C программа для нахождения угла между часовой и минутной стрелками
#include <stdio.h>
#include <stdlib.h>

  
// Сервисная функция, чтобы найти минимум двух целых

int min(int x, int y) { return (x < y)? x: y; }

  

int calcAngle(double h, double m)

{

    // проверяем ввод

    if (h <0 || m < 0 || h >12 || m > 60)

        printf("Wrong input");

  

    if (h == 12) h = 0;

    if (m == 60) m = 0;

  

    // Рассчитать углы, сдвинутые часовой и минутной стрелками

    // со ссылкой на 12:00

    int hour_angle = 0.5 * (h*60 + m);

    int minute_angle = 6*m;

  

    // Находим разницу между двумя углами

    int angle = abs(hour_angle - minute_angle);

  

    // Возвращаем меньший угол из двух возможных углов

    angle = min(360-angle, angle);

  

    return angle;

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    printf("%d n", calcAngle(9, 60));

    printf("%d n", calcAngle(3, 30));

    return 0;

}

Джава

// Java программа для нахождения угла между часовой и минутной стрелками

import java.io.*;

  

class GFG 

{

    // Функция для расчета угла

    static int calcAngle(double h, double m)

    {

        // проверяем ввод

        if (h <0 || m < 0 || h >12 || m > 60)

            System.out.println("Wrong input");

  

        if (h == 12)

            h = 0;

        if (m == 60

            m = 0;

  

        // Рассчитать углы, сдвинутые часовой и минутной стрелками

        // со ссылкой на 12:00

        int hour_angle = (int)(0.5 * (h*60 + m));

        int minute_angle = (int)(6*m);

  

        // Находим разницу между двумя углами

        int angle = Math.abs(hour_angle - minute_angle);

  

        // меньший угол из двух возможных углов

        angle = Math.min(360-angle, angle);

  

        return angle;

    }

      

    // Драйвер программы

    public static void main (String[] args) 

    {

        System.out.println(calcAngle(9, 60)+" degree");

        System.out.println(calcAngle(3, 30)+" degree");

    }

}

  
// Предоставлено Прамод Кумар

питон

# Python программа для поиска угла
# между часовой и минутной стрелками

  
# Функция для расчета угла ч / б
# часовая стрелка и минутная стрелка

def calcAngle(h,m):

          

        # проверить ввод

        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

          

        # Рассчитать углы, сдвинутые

        # часовая и минутная стрелки с

        # ссылка на 12:00

        hour_angle = 0.5 * (h * 60 + m)

        minute_angle = 6 * m

          

        # Найти разницу между двумя углами

        angle = abs(hour_angle - minute_angle)

          

        # Вернуть меньший угол два

        # возможные углы

        angle = min(360 - angle, angle)

          

        return angle

  
# Драйверная программа

h = 9

m = 60

print('Angle ', calcAngle(h,m))

  
# Этот код предоставлен Danish Raza

C #

// C # программа для поиска угла между
// часовая и минутная стрелки

using System;

  

class GFG {

      

    // Функция для расчета угла

    static int calcAngle(double h, double m)

    {

        // проверяем ввод

        if (h < 0 || m < 0 || 

            h > 12 || m > 60)

            Console.Write("Wrong input");

  

        if (h == 12)

            h = 0;

              

        if (m == 60) 

            m = 0;

  

        // Рассчитаем углы, сдвинутые на час и

        // минутные стрелки со ссылкой на 12:00

        int hour_angle = (int)(0.5 * (h * 60 + m));

        int minute_angle = (int)(6 * m);

  

        // Находим разницу между двумя углами

        int angle = Math.Abs(hour_angle - minute_angle);

  

        // меньший угол из двух возможных углов

        angle = Math.Min(360 - angle, angle);

  

        return angle;

    }

      

    // Код драйвера

    public static void Main () 

    {

        Console.WriteLine(calcAngle(9, 60));

        Console.Write(calcAngle(3, 30));

    }

}

  
// Этот код предоставлен Нитином Митталом.

PHP

<?php
// PHP программа для поиска
// угол между часами
// и минутные стрелки

  
// Функция полезности для
// найти минимум два
// целые числа

function mintwo($x, $y)

{

    return ($x < $y) ? 

                  $x : $y

}

  

function calcAngle($h, $m)

{

    // проверяем ввод

    if ($h <0 || $m < 0 ||

        $h >12 || $m > 60)

        echo "Wrong input";

  

    if ($h == 12) $h = 0;

    if ($m == 60) $m = 0;

  

    // Рассчитать углы

    // перемещено на час и

    // минутные стрелки

    // ссылка на 12:00

    $hour_angle = 0.5 * 

                  ($h * 60 + $m);

    $minute_angle = 6 * $m;

  

    // Находим разницу

    // между двумя углами

    $angle = abs($hour_angle

                 $minute_angle);

  

    // Возвращаем меньший угол

    // из двух возможных углов

    $angle = min(360 - $angle

                       $angle);

      

    return $angle;

}

  
// Код драйвера

echo calcAngle(9, 60), "\n";

echo calcAngle(3, 30), "\n";

  
// Этот код предоставлен ajit
?>


Выход:

90 
75

Упражнение: найдите все моменты, когда наложены часовая и минутная стрелки.

Эта статья предоставлена Ashish Bansal . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Рассчитайте угол между часовой стрелкой и минутной стрелкой

0.00 (0%) 0 votes