Эта проблема известна как проблема угла наклона часов, где нам нужно найти угол между стрелками аналоговых часов в данный момент времени.
Примеры:
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 ++
#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;
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;
}
|
С
#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;
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;
}
|
Джава
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 ;
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" );
}
}
|
питон
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
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))
|
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;
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
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;
$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" ;
?>
|
Выход:
90
75
Упражнение: найдите все моменты, когда наложены часовая и минутная стрелки.
Эта статья предоставлена Ashish Bansal . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме
Рекомендуемые посты:
- Время, когда минутная стрелка и часовая стрелка совпадают
- Программа для расчета угла по окружности, которую представляет аккорд, когда задан центральный угол, который составляет аккорд
- Внешний угол циклического четырехугольника, когда задан противоположный внутренний угол
- Угол между хордой и касательной, когда задан угол в альтернативном сегменте
- Угол, образованный хордой в центре круга, когда задан угол, образованный другим равным аккордом конгруэнтного круга
- Угол под аккордом, если задан угол под аккордом той же длины
- Время, затрачиваемое на остановку машины в час
- Угол между двумя плоскостями в 3D
- Проверьте, возможно ли создать многоугольник с заданным углом
- Найдите две другие стороны прямоугольного треугольника
- Узнайте, возможно ли повернуть страницу на угол или нет.
- Угол, образованный дугой в центре круга
- Найти две другие стороны и углы прямоугольного треугольника
- Угол между 3 заданными вершинами в n-стороннем правильном многоугольнике
- Площадь наибольшего квадрата в прямоугольном треугольнике
Рассчитайте угол между часовой стрелкой и минутной стрелкой
0.00 (0%) 0 votes